| 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
| 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 |