SQL määrittää, suoritetaanko yksittäinen tieto avaimella päivityksessä tai lisäämisessä

Sivu päivitetty :
Sivun luontipäivämäärä :

Prosessissa, kuten Päivitä, jos avain on olemassa, tai Lisää, jos avainta ei ole, valinta suoritetaan yleensä avaimen perusteella, ja prosessi määritetään tarkistamalla, onko yksi kirjainkoko. SQL Server 2008 lisää myös yhdistämislauseen, jonka avulla voit suorittaa päivityksen ja lisäyksen (ja sitten poistaa) yhdellä lauseella. Tämä on kuitenkin kahden taulukon vertailu, eikä se sovellu yksittäisiin tietoihin.

Itse asiassa on olemassa tapa päivittää rivi helposti määrittämällä Päivitä ja Lisää tarvitsematta tarkistaa tietueiden määrää valitulla lauseella.

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

Avainsana tässä on "@@ROWCOUNT". @@ROWCOUNT voi hakea niiden rivien määrän, joilla edellistä SQL:ää käytettiin. Edellinen koodi suorittaa ensin Päivitys-lauseen, ja jos se on päivitetty, @@ROWCOUNT palauttaa arvon 1 tai suuremman, joten se ei suorita seuraavaa Lisäys-lausetta. Jos päivityslauseeseen ei päivitetä riviä, @@ROWCOUNT palauttaa arvon 0, joten suorita Lisää IF-lauseella -tuomio.

Koska yllä oleva SQL on malli, korvaa sarakkeiden nimet ja arvot, jotka päivitetään sopivana ajankohtana. @value on vain muuttujan nimi, joten korvaa se päivitettävällä arvolla.