PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

In che modo la sintassi INSERT ... ON CONFLICT (id) DO UPDATE... può essere utilizzata con un ID sequenza?

Ok, ho appena risolto. Ho letto questo fantastico articolo di Neil Conway:http://www.neilconway.org/docs/sequences /

Dove mostra l'uso del DEFAULT parola chiave per indicare al DB di utilizzare il valore della sequenza per la colonna.

Quindi ecco l'esempio aggiornato che ora funziona:

INSERT INTO tbltest (
    tbltest_ID,
    tbltest_Name,
    tbltest_Description) 
VALUES 
(DEFAULT, 'new record','new record description'),
(4, 'existing record name','existing record description')
ON CONFLICT (tbltest_ID) DO UPDATE SET (
    tbltest_Name,
    tbltest_Description) = (
    excluded.tbltest_Name,
    excluded.tbltest_Description) RETURNING *;

Spero che questo aiuti qualcuno;-)