SQL لتحديد ما إذا كان يتم تنفيذ جزء واحد من البيانات بواسطة مفتاح في تحديث أو إدراج

تحديث الصفحة :
تاريخ إنشاء الصفحة :

في عملية مثل تحديث إذا كان هناك مفتاح أو إدراج إذا لم يكن هناك مفتاح، عادة ما يتم إجراء تحديد استنادا إلى المفتاح، ويتم تحديد العملية عن طريق التحقق مما إذا كانت هناك حالة واحدة. يضيف SQL Server 2008 أيضا عبارة "دمج" تسمح لك بإجراء تحديث وإدراج (ثم حذف) مع عبارة واحدة. ومع ذلك ، هذه مقارنة بين جدولين وغير مناسبة للبيانات الفردية.

في الواقع ، هناك طريقة لتحديث صف بسهولة عن طريق تحديد تحديث وإدراج دون الحاجة إلى التحقق من عدد السجلات باستخدام عبارة محددة.

update [TableName]
set [ColumnName] = @value
--    : 他更新 SQL
where [KeyColumnName] = @value
--    : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
  [ColumnName]
--  : 他更新 SQL
)
values
(
  @value
--  : 他更新値
)

الكلمة الرئيسية هنا هي "@@ROWCOUNT". يمكن @@ROWCOUNT استرداد عدد الصفوف التي تم تطبيق SQL السابق عليها. تقوم التعليمة البرمجية السابقة بتنفيذ عبارة التحديث أولا، وإذا تم تحديثها، @@ROWCOUNT ترجع 1 أو أكبر، لذلك لا تقوم بتنفيذ عبارة الإدراج التالية. على العكس من ذلك، إذا لم يتم تحديث أي صف في بيان التحديث، @@ROWCOUNT إرجاع 0، لذا قم بتنفيذ حكم عبارة إدراج بواسطة IF.

نظرا لأن SQL أعلاه عبارة عن قالب، فاستبدل أسماء الأعمدة والقيم المراد تحديثها في الوقت المناسب. @value هو مجرد اسم متغير ، لذا استبدل هذا بالقيمة التي تريد تحديثها.