sql >> Database teknologi >  >> RDS >> Mysql

Bærbar SQL-upsert-løsning (indsæt+opdatering) er nødvendig

Den eneste fuldstændig databaseagnostiske løsning, ved at bruge noget moderne databaser, er at kalde opdateringen og derefter indsætte i to operationer. Nogle databaser tillader ikke flere udsagn sendt i en enkelt operation, og nogle databaser returnerer muligvis ikke antallet af rækker, der er påvirket af opdateringen, så det ville jeg ikke stole på.

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

(særskilt opkald)

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. FIND_IN_SET med flere værdier

  2. Forsøger at udfylde en rullemenu i codeigniter med mysql-data

  3. MySQL CAST vs CONVERT

  4. Konfigurationssystemet kunne ikke initialiseres