sql >> Databáze >  >> RDS >> Mysql

Potřebné přenosné řešení SQL upsert (vložení+aktualizace).

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


  1. V porovnání je třeba vzít v úvahu koncové mezery ve varcharu

  2. Připojte se k SQLite

  3. Jak funguje funkce TRIM() v MySQL

  4. listagg data do použitelného formátu?