Единственото напълно независимо от базата данни решение, използващо донякъде модерни бази данни, е да извикате Update и след това Insert с две операции. Някои бази данни не позволяват множество оператори, изпратени в една операция, а някои бази данни може да не върнат броя на редовете, засегнати от актуализацията, така че не бих разчитал на това.
Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';
(отделно обаждане)
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'
);