やや最新のデータベースを使用する、完全にデータベースに依存しない唯一のソリューションは、2つの操作でUpdateを呼び出してからInsertを呼び出すことです。一部のデータベースでは、1回の操作で複数のステートメントを送信できません。また、一部のデータベースでは、更新の影響を受ける行数が返されない可能性があるため、これに依存しません。
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'
);