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

È necessaria una soluzione di upsert SQL portatile (inserimento+aggiornamento).

L'unica soluzione completamente indipendente dal database, utilizzando database alquanto moderni, consiste nel chiamare Aggiorna e poi Inserisci in due operazioni. Alcuni database non consentono l'invio di più istruzioni in una singola operazione e alcuni database potrebbero non restituire il numero di righe interessate dall'aggiornamento, quindi non farei affidamento su questo.

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

(chiamata separata)

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