Search Postgresql Archives

Re: UPDATE syntax

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



David Greco wrote:
> Need some help with UPDATE syntax. I am attempting to do something
like this:
> 
> WITH default_facility AS (
>                 SELECT facility_id,
>                 inkjetorlabel
>                 FROM engagement_facility_defs
>                 WHERE engagement_facility_def_id = 8
> )
> UPDATE engagement_facilities SET (
>                 facility_id,
>                 inkjetorlabel
> )
> = ( default_facility.* )
> FROM default_facility
> WHERE engagement_facilities.engagement_id =3
> 
> Postgres errors out on the SET() saying "number of columns does not
match number of values".  Also
> tried default_facility.* without the parenthesis but it does not like
that syntax. This example is a
> bit simplified, in reality there are 90 columns in both lists.
> 
> Is this syntax not possible? I have rewritten it to this form which
works, but I rather like the CTE
> syntax instead.

The problem seems to be the "*".
It works fine with CTE otherwise:

CREATE TABLE test (id integer primary key, val text);
INSERT INTO test VALUES (1, 'something');

WITH cte AS (SELECT 1 AS c1, 'other' AS c2)
  UPDATE test SET (id, val) = (cte.c1, CTE.c2)
  FROM cte
  WHERE id=1;

Yours,
Laurenz Albe


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux