sql >> Database >  >> RDS >> PostgreSQL

Postgres upsert:onderscheid maken tussen nieuwe en bijgewerkte rijen

Er is een manier zonder een kolom aan uw tabel toe te voegen:

CREATE TABLE tbl(id int PRIMARY KEY, col int);
INSERT INTO tbl VALUES (1, 1);
INSERT INTO tbl(id, col)
VALUES (1,11), (2,22)
ON     CONFLICT (id) DO UPDATE
SET    col = EXCLUDED.col
RETURNING *, (xmax = 0) AS inserted;

Uitleg:



  1. Gebruikersinvoer, opschonen en ontsmetten voor verzending naar db

  2. Moet ik Query Cache in MySQL uitschakelen?

  3. GROUP_CONCAT retourneert NULL als een waarde NULL is

  4. Duplicaten verwijderen uit resultaat van meerdere joins op tabellen met verschillende kolommen in MySQL