SQL, aby określić, czy pojedynczy fragment danych jest wykonywany za pomocą klucza w aktualizacji lub wstawianiu
W procesie takim jak Aktualizuj, jeśli istnieje klucz lub Wstaw, jeśli nie ma klucza, wybór jest zwykle wykonywany na podstawie klucza, a proces jest określany przez sprawdzenie, czy istnieje jeden przypadek. SQL Server 2008 dodaje również instrukcję "merge", która umożliwia wykonanie aktualizacji i wstawiania (a następnie usuwania) za pomocą pojedynczej instrukcji. Jest to jednak porównanie dwóch tabel i nie nadaje się do pojedynczych danych.
W rzeczywistości istnieje sposób na łatwą aktualizację wiersza poprzez określenie Aktualizuj i Wstaw bez konieczności sprawdzania liczby rekordów za pomocą instrukcji select.
update [TableName]
set [ColumnName] = @value
-- : 他更新 SQL
where [KeyColumnName] = @value
-- : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
[ColumnName]
-- : 他更新 SQL
)
values
(
@value
-- : 他更新値
)
Kluczowym słowem jest tutaj "@@ROWCOUNT". @@ROWCOUNT może pobrać liczbę wierszy, do których zastosowano poprzedni kod SQL. Powyższy kod wykonuje najpierw instrukcję Update, a jeśli została zaktualizowana, @@ROWCOUNT zwraca 1 lub więcej, więc nie wykonuje następnej instrukcji Insert. I odwrotnie, jeśli żaden wiersz nie zostanie zaktualizowany w instrukcji Update, @@ROWCOUNT zwraca wartość 0, więc wykonaj polecenie Wstaw przez ocenę instrukcji IF.
Ponieważ powyższy sql jest szablonem, zastąp nazwy kolumn i wartości, które mają zostać zaktualizowane w odpowiednim czasie. @value jest tylko nazwą zmiennej, więc zastąp ją wartością, którą chcesz zaktualizować.