SQL, et teha kindlaks, kas värskendamise või lisamise võti käivitab ühe andmeühiku

Lehekülg uuendatud :
Lehe loomise kuupäev :

Sellises protsessis nagu värskendamine võtme olemasolu korral või lisa, kui võtit pole, tehakse tavaliselt võtme põhjal valik ja protsess määratakse kindlaks, kas on üks teenindusjuhtum. SQL Server 2008 lisab ka "ühendamise" avalduse, mis võimaldab teil ühe väljavõttega teha värskenduse ja lisa (ja seejärel kustutada). Kuid see on kahe tabeli võrdlus ja ei sobi üksikute andmete jaoks.

Tegelikult on võimalik rida hõlpsalt värskendada, määrates värskenduse ja lisamise, ilma et peaksite valitud väljavõttega kirjete arvu kontrollima.

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

Võtmesõna on siin "@@ROWCOUNT". @@ROWCOUNT saab tuua ridade arvu, millele eelmine SQL rakendati. Eelmine tähis käivitab esmalt lause Värskenda ja kui seda on värskendatud, tagastab @@ROWCOUNT 1 või rohkem, nii et see ei käivita järgmist lisamisavaldust. Seevastu kui värskendamisavalduses ei värskendata ühtegi rida, tagastab @@ROWCOUNT veaväärtuse 0, nii et täitke lisa IF-lausega kohtuotsus.

Kuna ülaltoodud SQL on mall, asendage sobival ajal värskendatavad veerunimed ja väärtused. @value on lihtsalt muutuv nimi, nii et asendage see värskendatava väärtusega.