SQL, за да определите дали един брой данни се изпълнява от ключ в актуализация или Вмъкване
В процес като Актуализиране, ако има ключ или Вмъкване, ако няма ключ, обикновено се извършва избор въз основа на ключа и процесът се определя чрез проверка дали има един случай. SQL Server 2008 също добавя "обединяване" декларация, която ви позволява да извършите актуализация и вмъкване (и след това Изтриване) с едно изявление. Това обаче е сравнение на две таблици и не е подходящо за единични данни.
Всъщност има начин лесно да актуализирате ред, като определите Актуализиране и Вмъкване, без да се налага да проверявате броя на записите с избрана декларация.
update [TableName]
set [ColumnName] = @value
-- : 他更新 SQL
where [KeyColumnName] = @value
-- : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
[ColumnName]
-- : 他更新 SQL
)
values
(
@value
-- : 他更新値
)
Ключовата дума тук е "@@ROWCOUNT". @@ROWCOUNT може да извлече броя на редовете, към които е приложен предишния SQL. Предходният код изпълнява първо декларацията за актуализиране и ако е актуализиран, @@ROWCOUNT връща 1 или по-голямо, така че не изпълнява следващото вмъкване на извлечение. И обратно, ако в декларацията за актуализиране не се актуализира ред, @@ROWCOUNT връща 0, така че изпълни Вмъкване чрез решение if statement.
Тъй като горнияТ SQL е шаблон, заменете имената на колоните и стойностите, които трябва да се актуализират в съответния момент. @value е просто име на променлива, така че заменете това със стойността, която искате да актуализирате.