sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-upserts met meerdere waarden

Upsert met meerdere waarden is zeker mogelijk, en een belangrijk deel van waarom insert ... on conflict ... werd geïmplementeerd.

CREATE TABLE table1(col1 int, col2 text, constraint theconstraint unique(col1));

INSERT INTO table1 VALUES (1, 'parrot'), (4, 'turkey');

INSERT INTO table1 VALUES (1, 'foo'), (2,'bar'), (3,'baz')
ON CONFLICT ON CONSTRAINT theconstraint
DO UPDATE SET col2 = EXCLUDED.col2;

resulteert in

regress=> SELECT * FROM table1 ORDER BY col1;
 col1 | col2 
------+------
    1 | foo
    2 | bar
    3 | baz
    4 | turkey
(4 rows)

Als de documenten onduidelijk waren, stuur dan de juiste feedback naar de pgsql-algemene mailinglijst. Of nog beter, stel een patch voor aan de documenten.



  1. WebApp (Tomcat-jdbc) Gepoolde DB-verbinding die uitzondering opgeeft

  2. SQL - hoe SELECTEER je meerdere tabellen en JOIN meerdere rijen uit dezelfde kolom?

  3. Gebruikersvariabele in MySQL-subquery

  4. Postgres - Meerdere joins zorgen ervoor dat mijn query onjuiste gegevens retourneert