SQL برای تعیین اینکه آیا یک قطعه از داده ها توسط کلید در به روز رسانی یا درج اجرا می شود

صفحه به روز شده :
تاریخ ایجاد صفحه :

در فرایندی مانند Update اگر کلید یا Insert وجود داشته باشد اگر کلید وجود ندارد، یک انتخاب معمولاً بر اساس کلید انجام می شود و فرایند با بررسی اینکه آیا یک مورد وجود دارد یا خیر تعیین می شود. SQL سرور 2008 همچنین اضافه می کند "ادغام" بیانیه ای است که اجازه می دهد تا شما را به انجام بروز رسانی و درج (و سپس حذف) با یک بیانیه واحد. با این حال، این مقایسه دو جدول است و برای داده های واحد مناسب نیست.

در واقع، راهی برای به روز رسانی یک ردیف به راحتی با تعیین Update و Insert بدون نیاز به بررسی تعداد سوابق با یک بیانیه انتخاب وجود دارد.

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

کلمه کلیدی در اینجا "@@ROWCOUNT" است. این @@ROWCOUNT می تواند تعداد ردیف هایی را که SQL قبلی به آن ها اعمال شده بود بازیابی کند. کد قبلی ابتدا بیانیه Update را اجرا می کند، و اگر به روز شده باشد، @@ROWCOUNT ۱ یا بیشتر برمی گردد، بنابراین بیانیه درج بعدی را اجرا نمی کند. برعکس، اگر هیچ ردیفی در بیانیه به روز رسانی نشده باشد، @@ROWCOUNT 0 برمی گردد، بنابراین درج توسط قضاوت بیانیه IF را اجرا کنید.

از آنجا که SQL فوق یک الگو است، جایگزین نام ستون و مقادیر به روز شده در زمان مناسب. @value فقط یک نام متغیر است، بنابراین این را با مقداری که می خواهید به روز کنید جایگزین کنید.