Satu-satunya solusi agnostik basis data sepenuhnya, menggunakan basis data yang agak modern, adalah memanggil Pembaruan lalu Sisipkan dalam dua operasi. Beberapa database tidak mengizinkan beberapa pernyataan yang dikirim dalam satu operasi dan beberapa database mungkin tidak mengembalikan jumlah baris yang terpengaruh oleh Pembaruan jadi saya tidak akan mengandalkan itu.
Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';
(panggilan terpisah)
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'
);