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

como emular insert ignore e na atualização de chave duplicada (sql merge) com postgresql?


Com o PostgreSQL 9.5, essa agora é uma funcionalidade nativa (como o MySQL tem há vários anos):

INSERIR ... NO CONFLITO, NÃO FAÇA NADA/ATUALIZE ("UPSERT")

9.5 traz suporte para operações "UPSERT". INSERT é estendido para aceitar uma cláusula ON CONFLICT DO UPDATE/IGNORE. Esta cláusula especifica uma ação alternativa a ser tomada no caso de uma possível violação duplicada.

...

Mais um exemplo de nova sintaxe:
INSERT INTO user_logins (username, logins)
VALUES ('Naomi',1),('James',1) 
ON CONFLICT (username)
DO UPDATE SET logins = user_logins.logins + EXCLUDED.logins;