Solved. Use update tbl set (col1, col2, ...) = ROW(val1, val2, ...) where id=xx
Thank's to Laurenz Albe in the german mailinglist. Am 03.02.21 um 11:31 schrieb Ulrich Goebel:
Hi, in a Python Script I build an UPDATE using the syntax: update tbl set (col1, col2, ...) = (val1, val2, ...) where id = xx That works as long in the two lists are more then one column and values. If I have just one column and value, I get an error message: ========================================================================== 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() expressionLINE 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=# ========================================================================== In fact in the script I have both cases: one ore more columns. Is there another way but to code a case differentiation to avoid this error message? Well, I could use the other syntax: update tbl set col1=val1, col2=val2, ... where id=xx but I just like the former... Thank's Ulrich
-- Ulrich Goebel Am Büchel 57, 53173 Bonn
