SQL k určení, zda je jedna část dat spuštěna pomocí klíče v aktualizaci nebo vložení
V procesu, jako je Aktualizovat, pokud existuje klíč, nebo Vložit, pokud klíč neexistuje, se výběr obvykle provádí na základě klíče a proces se určuje kontrolou, zda existuje jeden případ. SQL Server 2008 také přidá příkaz "merge", který umožňuje provést aktualizaci a vložit (a potom odstranit) s jedním příkazem. Jedná se však o porovnání dvou tabulek a není vhodné pro jednotlivá data.
Ve skutečnosti existuje způsob, jak snadno aktualizovat řádek určením Aktualizovat a Vložit, aniž byste museli kontrolovat počet záznamů pomocí příkazu select.
update [TableName]
set [ColumnName] = @value
-- : 他更新 SQL
where [KeyColumnName] = @value
-- : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
[ColumnName]
-- : 他更新 SQL
)
values
(
@value
-- : 他更新値
)
Klíčovým slovem je zde "@@ROWCOUNT". @@ROWCOUNT může načíst počet řádků, na které byl použit předchozí SQL. Předchozí kód spustí příkaz Update jako první, a pokud byl aktualizován, vrátí @@ROWCOUNT hodnotu 1 nebo vyšší, takže neprovede další příkaz Insert. Naopak, pokud není v příkazu Update aktualizován žádný řádek, vrátí @@ROWCOUNT hodnotu 0, takže proveďte příkaz Vložit podle úsudku příkazu IF.
Vzhledem k tomu, že výše uvedený SQL je šablona, nahraďte názvy sloupců a hodnoty, které mají být aktualizovány ve vhodnou dobu. @value je pouze název proměnné, takže jej nahraďte hodnotou, kterou chcete aktualizovat.