PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie emuliert man Insert Ignorieren und bei doppelter Schlüsselaktualisierung (SQL Merge) mit Postgresql?

Mit PostgreSQL 9.5 ist dies nun eine native Funktionalität (wie sie MySQL seit mehreren Jahren hat):

INSERT ... ON CONFLICT DO NOTHING/UPDATE ("UPSERT")

9.5 bringt Unterstützung für "UPSERT"-Operationen. INSERT wurde erweitert, um eine ON CONFLICT DO UPDATE/IGNORE-Klausel zu akzeptieren. Diese Klausel legt eine alternative Maßnahme fest, die im Falle eines möglichen doppelten Verstoßes zu ergreifen ist.

...

Weiteres Beispiel für neue Syntax:

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