SQL, kad nustatytumėte, ar naujinimo arba įterpimo klavišu vykdoma viena duomenų dalis

Puslapis atnaujintas :
Puslapio sukūrimo data :

Atliekant tokį procesą kaip Naujinti, jei yra raktas, arba Įterpti, jei rakto nėra, pasirinkimas paprastai atliekamas pagal raktą, o procesas nustatomas tikrinant, ar yra vienas atvejis. "SQL Server 2008" taip pat prideda "suliejimo" teiginį, kuris leidžia atlikti naujinimą ir įterpimą (o tada ištrinti) su vienu sakiniu. Tačiau tai yra dviejų lentelių palyginimas ir netinka atskiriems duomenims.

Tiesą sakant, yra būdas lengvai atnaujinti eilutę nustatant Naujinti ir Įterpti, netikrinant įrašų skaičiaus su pasirinktu išrašu.

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

Raktinis žodis čia yra "@@ROWCOUNT". @@ROWCOUNT gali nuskaityti eilučių, kurioms buvo pritaikytas ankstesnis SQL, skaičių. Ankstesnis kodas pirmiausia įvykdo naujinimo išrašą, o jei jis buvo atnaujintas, @@ROWCOUNT grąžina 1 ar daugiau, todėl nevykdo kito įterpimo sakinio. Ir atvirkščiai, jei iš naujo naujinimo sakinyje nėra atnaujinta eilutė, @@ROWCOUNT grąžina 0, todėl vykdykite sprendimą Įterpti pagal IF pareiškimą.

Kadangi pirmiau minėtas SQL yra šablonas, pakeiskite stulpelių pavadinimus ir reikšmes, kurios turi būti atnaujintos tinkamu laiku. @value yra tik kintamojo pavadinimas, todėl pakeiskite jį reikšme, kurią norite atnaujinti.