Re: UPDATE Syntax

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Ulrich Goebel <ml(at)fam-goebel(dot)de>, pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: UPDATE Syntax
Date: 2021-02-03 10:27:58
Message-ID: 5b1b96cf00925b759c1057b3fc4a4f0b3bad2804.camel@cybertec.at
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

On Wed, 2021-02-03 at 11:23 +0100, Ulrich Goebel wrote:
> in einem Python-Skript erzeuge ich ein UPDATE mit folgender Syntax:
>
> update tbl set (col1, col2, ...) = (val1, val2, ...) where id = xx
>
> Das funktioniert, solange in den beiden Listen mehr als eine Spalte bzw.
> mehr als ein Wert vorkommen. Ist nur eine Spalte betroffen, gibt es eine
> Fehlermeldung:
>
> ERROR: source for a multiple-column UPDATE item must be a sub-SELECT or ROW() expression
>
> Tatsächlich kommt es in dem Skript dann vor, dass sowohl UPDATEs mit
> einer als auch mit mehreren Spalten anfallen.
>
> Gibt es einen anderen Weg, als dass ich dieses Problem mit einer
> Fallunterscheidung abfange? Gut, ich könnte generell auf die Syntax
>
> update tbl set col1=val1, col2=val2, ... where id=xx
>
> umsteigen, das ist aber für die Programmierung etwas umständlicher...

Ja, man kann einfach tun, was die Fehlermeldung empfiehlt:

update tbl set (col1, col2, ...) = ROW(val1, val2, ...) where id = xx;

update tbl set (col1) = ROW(val1) where id = xx;

Liebe Grüße,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Michael Krüger 2021-04-06 19:04:45 Job Angebot als Datenbankentwickler ...
Previous Message Ulrich Goebel 2021-02-03 10:23:12 UPDATE Syntax