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

Postgres UPSERT znovu používá hodnoty sloupců z INSERT na UPDATE

Ano, existuje speciální tabulka EXCLUDED za účelem:

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

Stejně jako vysvětluje manuál :

Funguje také pro víceřádkové INSERTy:

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



  1. Na Centos nelze nainstalovat rozšíření php-mysqli

  2. Získejte minimální cenu každého typu produktu s převodem měny

  3. PHP Apache spadne při provádění ULOŽENÉ PROCEDURY

  4. Vyberte záznamy podle posledního data