PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como a sintaxe INSERT ... ON CONFLICT (id) DO UPDATE... pode ser usada com um ID de sequência?


Ok acabei de resolver. Eu li este ótimo artigo de Neil Conway:http://www.neilconway.org/docs/sequences /

Onde ele mostra o uso do DEFAULT palavra-chave para dizer ao banco de dados para usar o valor de sequência para a coluna.

Então aqui está o exemplo atualizado que agora 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 ajude alguém;-)