Search Postgresql Archives

Re: inserting to a multi-table view

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

 



On Mon, Jun 16, 2008 at 8:49 PM, Michael Shulman <shulman@xxxxxxxxxxxx> wrote:
> Hi,
>
> This feels like a very basic question but I cannot figure it out.
> Suppose I have two tables and a view that combines their data:
>
> CREATE TABLE person
>  (person_id SERIAL PRIMARY KEY,
>  ...);
>
> CREATE TABLE student
>  (student_id SERIAL PRIMARY KEY,
>  person_id INTEGER REFERENCES person,
>  ...)
>
> CREATE VIEW studentinfo AS
>  SELECT * FROM person JOIN student USING person_id;
>
> I want to be able to do INSERTs on "studentinfo" and have rows created
> in both "person" and "student".  This requires first inserting into
> "person", capturing the "person_id" of the resulting row, and using it
> to insert into "student".  This seems as though it must be a common
> situation.
>
> I am happy to use either rules or triggers, but I can't figure
> out how to do it with either.  I can write a rule that does two
> INSERTs but I don't know how to capture the id resulting from the
> first insert and put it into the second.  I can write a trigger
> function that does the right thing, with 'INSERT ... RETURNING
> person_id INTO ...', but Postgres will not let me add an INSERT
> trigger to a view; it says 'ERROR: "studentinfo" is not a table'.

Got a short example of what you've tried so far?


[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