SQL, lai noteiktu, vai viena datu daļa tiek izpildīta ar atslēgu atjauninājumā vai iespraušanā

Lapa atjaunota :
Lapas izveides datums :

Tādā procesā kā Atjaunināt, ja ir atslēga, vai Ievietot, ja nav atslēgas, atlase parasti tiek veikta, pamatojoties uz atslēgu, un process tiek noteikts, pārbaudot, vai ir viens pieteikums. SQL Server 2008 pievieno arī priekšrakstu "sapludināšana", kas ļauj veikt atjaunināšanu un ievietošanu (un pēc tam dzēšanu) ar vienu priekšrakstu. Tomēr tas ir divu tabulu salīdzinājums un nav piemērots atsevišķiem datiem.

Faktiski ir veids, kā viegli atjaunināt rindu, nosakot Atjaunināt un ievietot, nepārbaudot ierakstu skaitu ar atlases priekšrakstu.

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

Atslēgas vārds šeit ir "@@ROWCOUNT". @@ROWCOUNT var izgūt to rindu skaitu, kurām tika lietota iepriekšējā SQL. Iepriekšējais kods vispirms izpilda atjaunināšanas priekšrakstu, un, ja tas ir atjaunināts, @@ROWCOUNT atgriež 1 vai vairāk, tāpēc tas neizpilda nākamo priekšrakstu Ievietošana. Un otrādi, ja priekšrakstā Atjaunināt nav atjaunināta neviena rinda, @@ROWCOUNT atgriež 0, tāpēc izpildiet spriedumu Ievietot pēc priekšraksta IF sprieduma.

Tā kā iepriekš minētā SQL ir veidne, aizstājiet kolonnu nosaukumus un vērtības, kas jāatjaunina atbilstošā laikā. @value ir tikai mainīgā nosaukums, tāpēc aizstājiet to ar atjaunināmo vērtību.