sql >> Databasteknik >  >> RDS >> Mysql

Bärbar SQL-upsert-lösning (infoga+uppdatering) behövs

Den enda helt databasagnostiska lösningen, med lite moderna databaser, är att anropa uppdateringen och sedan infoga i två operationer. Vissa databaser tillåter inte flera uttalanden som skickas i en enda operation och vissa databaser kanske inte returnerar antalet rader som påverkas av uppdateringen så jag skulle inte lita på det.

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

(separat samtal)

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


  1. Migrera MySQL till PostgreSQL på AWS RDS, del 3

  2. Sök i mysql-tabellen från sista raden

  3. Konvertera 'smalldatetime' till 'datetimeoffset' i SQL Server (T-SQL-exempel)

  4. Uppdatera fråga med PDO och MySQL