sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres upsert:skilja mellan nya och uppdaterade rader

Det finns ett sätt utan att lägga till en kolumn i tabellen:

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;

Förklaring:



  1. Varning:Att upprätta SSL-anslutning utan serverns identitetsverifiering rekommenderas inte

  2. Måltabellen kan inte uppdateras

  3. Normalisera MySQL-data

  4. Hur man hanterar främmande nyckel vid partitionering