اخر سجل في الجدول بطريقة امنه Get the last record in sql

اخر سجل في الجدول بطريقة امنه Get the last record in sql

المستوي الخامس مبرمج محترف


بعد ادخالك لقيمة في جدول , واردت الحصول علي رقم ID الاخير الذي قمت بادخاله بطريقة امنه في المشاريع الكبيرة

submit to reddit

اخر سجل في الجدول بطريقة امنه Get the last record in sql

نظرة عامة

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

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

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()

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

 

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