Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Portable SQL-Upsert-Lösung (Einfügen+Aktualisieren) erforderlich

Die einzige vollständig datenbankunabhängige Lösung, die einigermaßen moderne Datenbanken verwendet, besteht darin, das Update und dann das Insert in zwei Vorgängen aufzurufen. Einige Datenbanken erlauben keine mehrfachen Anweisungen, die in einer einzigen Operation gesendet werden, und einige Datenbanken geben möglicherweise nicht die Anzahl der Zeilen zurück, die von der Aktualisierung betroffen sind, daher würde ich mich nicht darauf verlassen.

Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';

(separater Aufruf)

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'
                    );