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

come emulare insert ignore e aggiornamento chiave duplicata (sql merge) con postgresql?

Con PostgreSQL 9.5, questa è ora una funzionalità nativa (come MySQL ha avuto per diversi anni):

INSERT... IN CONFLITTO NON FARE NULLA/AGGIORNA ("UPSERT")

9.5 offre il supporto per le operazioni "UPSERT". INSERT è esteso per accettare una clausola ON CONFLICT DO UPDATE/IGNORE. Questa clausola specifica un'azione alternativa da intraprendere in caso di una presunta violazione duplicata.

...

Ulteriore esempio di nuova sintassi:

INSERT INTO user_logins (username, logins)
VALUES ('Naomi',1),('James',1) 
ON CONFLICT (username)
DO UPDATE SET logins = user_logins.logins + EXCLUDED.logins;