فهم كيفية استرجاع القيمة IDENTITY
لصف مدرج في SQL
إذا كنت تعمل مع SQL Server وتحتاج إلى استرجاع قيمة IDENTITY
لصف مدرج، فهناك عدة خيارات متاحة. تأتي كل طريقة مع تداعياتها وحالات استخدامها الخاصة. في هذه المقالة، سوف نستكشف أكثر الطرق شيوعًا للحصول على القيمة IDENTITY
لصف مدرج ونوضح متى يجب استخدام كل طريقة.
تحدي استرجاع قيمة IDENTITY
عندما تقوم بإدراج سجل جديد في جدول قاعدة البيانات الذي يحتوي على عمود هوية، يقوم SQL Server تلقائيًا بإنشاء قيمة فريدة لهذا العمود. ومع ذلك، قد تجد نفسك بحاجة لاسترجاع هذه القيمة المولدة مباشرة بعد إجراء عملية الإدراج. يمكن أن يكون هذا أمرًا حاسمًا لأسباب متنوعة، مثل التسجيل، أو المعالجة الإضافية، أو إقامة علاقات مع جداول أخرى.
الطرق المتاحة لاسترجاع قيم IDENTITY
-
استخدام
@@IDENTITY
- الوصف: يعيد آخر قيمة هوية تم توليدها لأي جدول في الجلسة الحالية، عبر جميع النطاقات.
- تحذير: نظرًا لأنه يسترجع القيم من جميع النطاقات، بما في ذلك تلك التي تم توليدها بواسطة المحفزات، فمن السهل استرجاع قيمة غير متوقعة عن طريق الخطأ.
- حالة الاستخدام: عمومًا لا يُوصى به بسبب الارتباك المحتمل.
-
استخدام
SCOPE_IDENTITY()
- الوصف: يعيد آخر قيمة هوية تم توليدها لأي جدول في الجلسة الحالية وداخل النطاق الحالي.
- التوصية: تعتبر هذه الطريقة الأكثر أمانًا وموثوقية عند استرجاع قيمة الهوية.
- حالة الاستخدام: مثالية لمعظم العمليات القياسية.
-
استخدام
IDENT_CURRENT('tableName')
- الوصف: يعيد آخر قيمة هوية تم توليدها لجدول معين، بغض النظر عن الجلسة أو النطاق.
- ملاحظة: استخدم هذه الطريقة عندما يكون من الضروري تحديد الجدول، على الرغم من أنها نادرة الطلب.
- حالة الاستخدام: يمكن أن تكون مفيدة إذا كنت بحاجة للحصول على قيم من جداول لم يتم تعديلها مؤخرًا بواسطة جلستك.
-
استخدام عبارة
OUTPUT
- الوصف: يتيح لك الوصول إلى كل صف تم إدراجه من خلال عبارة
INSERT
المحددة، بما في ذلك قيم الهوية المولدة لها. - الإيجابيات: أكثر وضوحًا من الطرق السابقة. يضمن الدقة حتى في حالة حدوث أخطاء بعد الإدراج.
- السلبيات: أكثر تفصيلاً قليلاً نظرًا لأنك ستحتاج إلى إدراج النتائج في متغير جدول أو جدول مؤقت.
- ملاحظة خاصة: إذا كانت استعلامك تنطوي على تنفيذ خطط متوازية، فهذه هي الطريقة الوحيدة المضمونة لاسترجاع قيمة الهوية.
- الوصف: يتيح لك الوصول إلى كل صف تم إدراجه من خلال عبارة
الخاتمة
كل طريقة لاسترجاع قيمة IDENTITY
لها نقاط قوتها وضعفها. إليك ملخص سريع لمساعدتك في اتخاذ القرار:
- استخدم
@@IDENTITY
إذا كنت مستعدًا للتحمل الارتباك والاحتمالات غير الواضحة. - تفضل
SCOPE_IDENTITY()
لمعظم الظروف العادية لضمان الدقة. - اختر
IDENT_CURRENT()
عندما تحتاج إلى معلومات من جدول معين. - قم بتطبيق عبارة
OUTPUT
إذا كنت بحاجة إلى عدة قيم من عملية الإدراج الخاصة بك، خاصة في الاستعلامات المعقدة أو أثناء معالجة الأخطاء.
أفكار نهائية
من خلال فهم هذه الطرق، يمكنك إدارة واسترجاع قيم الهوية في SQL Server بشكل فعال، مما يعزز نزاهة وموثوقية عمليات قاعدة البيانات الخاصة بك.