PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgres UPSERT réutilise les valeurs de colonne de INSERT sur UPDATE

Oui, il y a la table spéciale EXCLUDED dans le but :

INSERT INTO tbl (id, data)
VALUES (1, '<data_string>') 
ON CONFLICT (id) DO UPDATE SET data = EXCLUDED.data;

Comme le manuel explique :

Fonctionne également pour les INSERTs multi-lignes :

INSERT INTO tbl (id, data)
VALUES (1, '<data_string1>') 
     , (2, '<data_string2>') 
     , (3, '<data_string3>') 
ON CONFLICT (id) DO UPDATE
SET data = EXCLUDED.data;