H2 ON DUPLICATE KEY
In H2 non abbiamo l'istruzione ON DUPLICATE KEY, ma possiamo comunque raggiungere lo scopo in due modi diversi.
Alla fine della fiera il risultato è lo stesso.
La nostra tabella ha questi campi:
- nome
- cognome
Dove email è undice univoco.
Quindi per fare l'insertimento possiamo usare MERGE:
MERGE INTO persone (email, nome, cognome)
KEY(email)
VALUES ('mario.rossi@email.com', 'Mario', 'Rossi');
Se trova l'email allora andrà in update degli altri campi.
Una seconda possibilità sarebbe ON CONFLICT (CAMPO) DO UPDATE, solo che a me non ha funzionato.
Dovrebbe essere compatibile solo con le versioni di H2 >= 2.0.
Vi riporto comunque un esempio se volete provare:
INSERT INTO persone (email, nome, cognome)
VALUES ('mario.rossi@email.com', 'Mario', 'Rossi')
ON CONFLICT (email) DO UPDATE SET
nome = EXCLUDED.nome,
cognome = EXCLUDED.cognome;
Enjoy!
database h2 merge
Commentami!