SQL, če želite ugotoviti, ali se en del podatkov izvrši s ključem v posodobitvi ali vstavi

Stran posodobljena :
Datum ustvarjanja strani :

V postopku, kot je posodobitev, če je ključ ali Vstavi, če ni ključa, se izbira običajno izvede na podlagi ključa, postopek pa se določi s preverjanjem, ali obstaja en primer. SQL Server 2008 dodaja tudi izjavo "spajanje", ki vam omogoča, da izvedete Posodobitev in Vstavi (in nato Izbriši) z eno samo izjavo. Vendar je to primerjava dveh tabel in ni primerna za posamezne podatke.

Pravzaprav obstaja način, da preprosto posodobite vrstico tako, da določite Posodobi in Vstavi, ne da bi bilo treba preveriti število zapisov z izbrano izjavo.

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

Ključna beseda je "@@ROWCOUNT". V @@ROWCOUNT lahko pridobite število vrstic, za katere je bil uporabljen prejšnji SQL. Drugič, če je bila posodobljena, @@ROWCOUNT vrne 1 ali več, tako da ne bo izvršila naslednje izjave vstavi. Nasprotno, če v izjavi posodobitev ni posodobljena nobena vrstica, @@ROWCOUNT vrne 0, zato izvršite »Vstavi po sodbi izpisa IF«.

Ker je zgornji SQL predloga, zamenjajte imena stolpcev in vrednosti, ki jih želite posodobiti ob ustreznem času. @value je samo ime spremenljivke, zato ga zamenjajte z vrednostjo, ki jo želite posodobiti.