insert and get last id sql server

insert and get last id sql server

بعد ادخالك لقيمة في جدول , واردت الحصول علي رقم IDالاخير الذي قمت بادخاله بطريقة امنه في المشاريع الكبيرة ومقارنة بين select max,select top 1,SELECT SCOPE_IDENTITY()

نظرة عامة

هذا الموضوع تحتاجه كثيرا في فواتير البيع والشراء والمخازن وغيرها من العمليات الهامة التي لا تقبل اي اخطاء

فاذا قمنا بجملة ادخال عادية في جدول الفواتير مثلا

INSERT INTO Invoices (invoice_code) values(''0001'')

 

ادخلنا رقم فاتورة في حقل يسمي invoice_code

الان نريد ان نأتي بهذه القيمة كي نسجلها فورا

فاننا سوف نأتي بجملة استعلام وتأتي باخر سجل دخل في الجدول من خلال احدي الاوامر التالية

select max(id) from Invoices

select top 1(id) from Invoices

مشاكل ذلك



 

لكن ماذا اذا كان اكثر من مستخدم في نفس الوقت يقوم بالادخال في نفس الجدول فربما يأتي باخر قيمة في السجل وبالطبع قد يكون زميلك بالعمل قام بالضغط علي زر الحفظ قبلك وبالتالي ستأتي بقيمة مختلفة لاخر سجل دخل في الجدول .

الحل

في استخدام الادخال للجدول مع الاستعلام بطريقة امنه كالتالي

INSERT INTO Invoices (invoice_code) values(''0001'')

SELECT SCOPE_IDENTITY()

وبالتالي كتابتها كجملة واحدة فسوف يحدث امرين

1- سوف يتم ادخال القيمة في الجدول

2- سوف ترجع باخر قيمة دخلت الجدول وهي مثلا القيمة 5

حيث ان جملة SELECT SCOPE_IDENTITY()

ترجع باخر سجل دخل فورا حتي لو قام احد الزملاء بالضغط علي زر الحفظ قبلك في مكان اخر سوف يحفظ السشن الحالي لك او القيمة الحالية التي دخلت عن طريقك .

 

وهذه امن طريقة لحفظ الجدول والحصول علي قيمة اخر سجل في الجدول بعد الحفظ لنفس المستخدم وليس مستخدم اخر

بواسطة
مصر
سيتي ستار لتكنولوجيا المعلومات
سيتي ستار لتكنولوجيا المعلومات

عودة لمقالات الموقع