فهم كيفية استرجاع القيمة IDENTITY لصف مدرج في SQL

إذا كنت تعمل مع SQL Server وتحتاج إلى استرجاع قيمة IDENTITY لصف مدرج، فهناك عدة خيارات متاحة. تأتي كل طريقة مع تداعياتها وحالات استخدامها الخاصة. في هذه المقالة، سوف نستكشف أكثر الطرق شيوعًا للحصول على القيمة IDENTITY لصف مدرج ونوضح متى يجب استخدام كل طريقة.

تحدي استرجاع قيمة IDENTITY

عندما تقوم بإدراج سجل جديد في جدول قاعدة البيانات الذي يحتوي على عمود هوية، يقوم SQL Server تلقائيًا بإنشاء قيمة فريدة لهذا العمود. ومع ذلك، قد تجد نفسك بحاجة لاسترجاع هذه القيمة المولدة مباشرة بعد إجراء عملية الإدراج. يمكن أن يكون هذا أمرًا حاسمًا لأسباب متنوعة، مثل التسجيل، أو المعالجة الإضافية، أو إقامة علاقات مع جداول أخرى.

الطرق المتاحة لاسترجاع قيم IDENTITY

  1. استخدام @@IDENTITY

    • الوصف: يعيد آخر قيمة هوية تم توليدها لأي جدول في الجلسة الحالية، عبر جميع النطاقات.
    • تحذير: نظرًا لأنه يسترجع القيم من جميع النطاقات، بما في ذلك تلك التي تم توليدها بواسطة المحفزات، فمن السهل استرجاع قيمة غير متوقعة عن طريق الخطأ.
    • حالة الاستخدام: عمومًا لا يُوصى به بسبب الارتباك المحتمل.

    اعرف المزيد عن @@IDENTITY

  2. استخدام SCOPE_IDENTITY()

    • الوصف: يعيد آخر قيمة هوية تم توليدها لأي جدول في الجلسة الحالية وداخل النطاق الحالي.
    • التوصية: تعتبر هذه الطريقة الأكثر أمانًا وموثوقية عند استرجاع قيمة الهوية.
    • حالة الاستخدام: مثالية لمعظم العمليات القياسية.

    اعرف المزيد عن SCOPE_IDENTITY()

  3. استخدام IDENT_CURRENT('tableName')

    • الوصف: يعيد آخر قيمة هوية تم توليدها لجدول معين، بغض النظر عن الجلسة أو النطاق.
    • ملاحظة: استخدم هذه الطريقة عندما يكون من الضروري تحديد الجدول، على الرغم من أنها نادرة الطلب.
    • حالة الاستخدام: يمكن أن تكون مفيدة إذا كنت بحاجة للحصول على قيم من جداول لم يتم تعديلها مؤخرًا بواسطة جلستك.

    اعرف المزيد عن IDENT_CURRENT()

  4. استخدام عبارة OUTPUT

    • الوصف: يتيح لك الوصول إلى كل صف تم إدراجه من خلال عبارة INSERT المحددة، بما في ذلك قيم الهوية المولدة لها.
    • الإيجابيات: أكثر وضوحًا من الطرق السابقة. يضمن الدقة حتى في حالة حدوث أخطاء بعد الإدراج.
    • السلبيات: أكثر تفصيلاً قليلاً نظرًا لأنك ستحتاج إلى إدراج النتائج في متغير جدول أو جدول مؤقت.
    • ملاحظة خاصة: إذا كانت استعلامك تنطوي على تنفيذ خطط متوازية، فهذه هي الطريقة الوحيدة المضمونة لاسترجاع قيمة الهوية.

    اعرف المزيد عن عبارة OUTPUT

الخاتمة

كل طريقة لاسترجاع قيمة IDENTITY لها نقاط قوتها وضعفها. إليك ملخص سريع لمساعدتك في اتخاذ القرار:

  • استخدم @@IDENTITY إذا كنت مستعدًا للتحمل الارتباك والاحتمالات غير الواضحة.
  • تفضل SCOPE_IDENTITY() لمعظم الظروف العادية لضمان الدقة.
  • اختر IDENT_CURRENT() عندما تحتاج إلى معلومات من جدول معين.
  • قم بتطبيق عبارة OUTPUT إذا كنت بحاجة إلى عدة قيم من عملية الإدراج الخاصة بك، خاصة في الاستعلامات المعقدة أو أثناء معالجة الأخطاء.

أفكار نهائية

من خلال فهم هذه الطرق، يمكنك إدارة واسترجاع قيم الهوية في SQL Server بشكل فعال، مما يعزز نزاهة وموثوقية عمليات قاعدة البيانات الخاصة بك.