| From: | Ulrich Goebel <ml(at)fam-goebel(dot)de> |
|---|---|
| To: | pgsql-de-allgemein(at)lists(dot)postgresql(dot)org |
| Subject: | UPDATE Syntax |
| Date: | 2021-02-03 10:23:12 |
| Message-ID: | 7f11697f-35c0-467e-18ec-2fa24fff9cc3@fam-goebel.de |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-de-allgemein |
Guten Morgen,
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:
==========================================================================
cg=# select id, name, vorname, status from tbl_person;
id | name | vorname | status
----+--------+---------+--------
3 | Goebel | Ulrich | a
(1 row)
cg=#
cg=#
cg=#
cg=# update tbl_person set status = 'a' where id=3;
UPDATE 1
cg=#
cg=#
cg=#
cg=# update tbl_person set (status) = ('a') where id=3;
ERROR: source for a multiple-column UPDATE item must be a sub-SELECT or
ROW() expression
LINE 1: update tbl_person set (status) = ('a') where id=3;
^
cg=#
cg=#
cg=#
cg=# update tbl_person set (status, name) = ('a', 'Goebel') where id=3;
UPDATE 1
cg=#
==========================================================================
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...
Mit Dank und Gruß
Ulrich
--
Ulrich Goebel
Am Büchel 57, 53173 Bonn
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Laurenz Albe | 2021-02-03 10:27:58 | Re: UPDATE Syntax |
| Previous Message | SwissPUG Info | 2021-02-01 09:03:56 | Online Meetup: PostgreSQL Anwender-Treffen |