sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo se puede utilizar la sintaxis INSERT... ON CONFLICT (id) DO UPDATE... con un ID de secuencia?

Ok, acabo de resolverlo. Leí este gran artículo de Neil Conway:http://www.neilconway.org/docs/sequences //a>

Donde muestra el uso del DEFAULT palabra clave para decirle a la base de datos que use el valor de secuencia para la columna.

Así que aquí está el ejemplo actualizado que ahora funciona:

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

Espero que esto ayude a alguien;-)