PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment la syntaxe INSERT ... ON CONFLICT (id) DO UPDATE... peut-elle être utilisée avec un ID de séquence ?

Ok, je viens de le résoudre. J'ai lu cet excellent article de Neil Conway :http://www.neilconway.org/docs/sequences /

Où il montre l'utilisation du DEFAULT mot-clé pour indiquer à la base de données d'utiliser la valeur de séquence pour la colonne.

Voici donc l'exemple mis à jour qui fonctionne désormais :

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 *;

J'espère que cela aidera quelqu'un;-)