Re: Postgres CTE issues

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Shekar Tippur <ctippur(at)gmail(dot)com>
Cc: "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Postgres CTE issues
Date: 2015-05-26 16:00:09
Message-ID: CAKFQuwbMEZFiNKiaCKUvvoS854bkE3Dqa288vcGYTg3DtK09Og@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Tue, May 26, 2015 at 8:45 AM, Shekar Tippur <ctippur(at)gmail(dot)com> wrote:

>
> This is what I am trying:
>
> WITH x AS
>
> (INSERT INTO industry (name,abbr,description,cr_date,last_upd)
>
> VALUES ('df','','',now(),now()) returning id) insert into sector
> (name,description,cr_date,last_upd,industry_id) select
> 's1','',now(),now(),id from x;
>
> I get a error:
>
> ERROR: insert or update on table "sector" violates foreign key constraint
> "sector_id_fkey"
>
> DETAIL: Key (id)=(394) is not present in table "industry".
>
> If I execute the insert individually, I am able to insert a record. Wonder
> what I am doing wrong.
>
> I have been stuck with this issue for over 24 hours. Appreciate any help.
>
>
It is not possible to accomplish your goal using a CTE. From the point of
view of both tables the data they can see is what was present before the
statement began.

The more usual way to accomplish this is the write a pl/pgsql function with
two statements and passing the ID between them using an intermediate
variable.

​David J.

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message David G. Johnston 2015-05-26 16:14:45 Fwd: Postgres CTE issues
Previous Message Shekar Tippur 2015-05-26 15:45:32 Postgres CTE issues