PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann die Syntax INSERT ... ON CONFLICT (id) DO UPDATE ... mit einer Sequenz-ID verwendet werden?

Ok hat gerade geklappt. Ich habe diesen großartigen Artikel von Neil Conway gelesen:http://www.neilconway.org/docs/sequences /

Wo er die Verwendung des DEFAULT zeigt Schlüsselwort, um der Datenbank mitzuteilen, dass sie den Sequenzwert für die Spalte verwenden soll.

Hier ist also das aktualisierte Beispiel, das jetzt funktioniert:

INSERT INTO tbltest (
    tbltest_ID,
    tbltest_Name,
    tbltest_Description) 
VALUES 
(DEFAULT, 'new record','new record description'),
(4, 'existing record name','existing record description')
ON CONFLICT (tbltest_ID) DO UPDATE SET (
    tbltest_Name,
    tbltest_Description) = (
    excluded.tbltest_Name,
    excluded.tbltest_Description) RETURNING *;

Hoffe das hilft jemandem;-)