Den enda helt databasagnostiska lösningen, med lite moderna databaser, är att anropa uppdateringen och sedan infoga i två operationer. Vissa databaser tillåter inte flera uttalanden som skickas i en enda operation och vissa databaser kanske inte returnerar antalet rader som påverkas av uppdateringen så jag skulle inte lita på det.
Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';
(separat samtal)
Insert Into MyTable(KeyCol, Data)
Select 'key', 'Data'
From ( Select 1 As Value ) As Z
Where Not Exists (
Select 1
From MyTable As T1
Where T1.KeyCol = 'key'
);