sql >> Databáze >  >> RDS >> PostgreSQL

Postgres upsert:rozlišujte mezi novými a aktualizovanými řádky

Existuje způsob bez přidání sloupce do tabulky:

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;

Vysvětlení:



  1. Jak napsat příkaz SQL s uvozovkami?

  2. Jak opravit chybu Lock Wait Timeout Exceeded Error v MySQL

  3. Výpočet klouzavého průměru MySQL

  4. Je možné provést výběr do tabulky typu objektu?