Jediným zcela databázově agnostickým řešením využívajícím poněkud moderní databáze je zavolat Update a následně Insert ve dvou operacích. Některé databáze neumožňují odeslání více příkazů v rámci jedné operace a některé databáze nemusí vrátit počet řádků ovlivněných aktualizací, takže bych na to nespoléhal.
Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';
(samostatný hovor)
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'
);