Jedynym rozwiązaniem całkowicie niezależnym od bazy danych, korzystającym z nieco nowoczesnych baz danych, jest wywołanie aktualizacji, a następnie wstawienia w dwóch operacjach. Niektóre bazy danych nie pozwalają na wysyłanie wielu instrukcji w jednej operacji, a niektóre bazy danych mogą nie zwracać liczby wierszy, których dotyczy aktualizacja, więc nie będę na tym polegać.
Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';
(oddzielne połączenie)
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'
);