SQL na určenie, či sa v aktualizácii alebo vložení vykoná jeden údaj kľúčom

Stránka aktualizovaná :
Dátum vytvorenia strany :

V procese, ako je aktualizácia, ak existuje kľúč alebo Vloženie, ak nie je kľúč, sa výber zvyčajne vykonáva na základe kľúča a proces sa určí kontrolou, či existuje jeden prípad. SQL Server 2008 tiež pridáva vyhlásenie "zlúčiť", ktoré vám umožní vykonať aktualizáciu a vložiť (a potom odstrániť) s jedným vyhlásením. Ide však o porovnanie dvoch tabuliek a nie je vhodný pre jednotlivé údaje.

V skutočnosti existuje spôsob, ako ľahko aktualizovať riadok určením aktualizácie a vloženia bez toho, aby ste museli kontrolovať počet záznamov pomocou vybraného výpisu.

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

Kľúčové slovo je "@@ROWCOUNT". @@ROWCOUNT môže získať počet riadkov, na ktoré bolo použité predchádzajúce SQL. Predchádzajúci kód najprv vykoná príkaz Aktualizovať a ak bol aktualizovaný, vráti @@ROWCOUNT hodnotu 1 alebo viac, takže nevykoná ďalší príkaz vložiť. Naopak, ak sa vo výkaze Aktualizácia neaktualizuje žiadny riadok, @@ROWCOUNT vráti hodnotu 0, takže vykonajte rozsudok vložiť podľa výpisu IF.

Keďže vyššie uvedené SQL je šablóna, nahraďte názvy stĺpcov a hodnoty, ktoré sa majú aktualizovať vo vhodnom čase. @value je len variabilný názov, takže ho nahraďte hodnotou, ktorú chcete aktualizovať.