Search Postgresql Archives

Re: Question on trigger data visibility

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

 



On Monday, August 30, 2010 07:20:14 Maurice Gittens wrote:
> Hi,
> 
> Assume tablex, tabley and tablez are correctly populated in my database.
> 
> My purpose is to enforce referential integrity between a column in the
> tablex (the child)
> and a column in tablez (the parent).
> 
> Since normal foreign keys do not give me this functionality, I decide
> to write a trigger.
> My trigger function looks something like:
> 
> CREATE OR REPLACE FUNCTION trigger_on_tablex() RETURNS trigger AS $$
> BEGIN
>        PERFORM 1 FROM
>                tablex AS tab_x
>                INNER JOIN tabley AS tab_y ON tab_x.gp = tab_y.id
>                INNER JOIN tablez AS tab_z ON tab_y.ml = tab_z.id
>        WHERE
>                tab_x.name = tab_z.name;
> 
>        IF NOT FOUND THEN
>                RAISE EXCEPTION 'constraint violated ';
>                END IF;
>  END;$$  LANGUAGE plpgsql;
> 
> CREATE TRIGGER mytrigger
>        AFTER INSERT ON tablex  FOR EACH STATEMENT EXECUTE PROCEDURE
> trigger_on_tablex();
> 
> My problem is that no matter what I insert into tablex, the exception
> is always raised.
> 
> So, it seems that even though my trigger is defined as AFTER INSERT
> FOR EACH STATEMENT, the inserted row
> does not appear to be included in the join.
> 
> So, now to my question: Should, as a matter of principle, statement
> level triggers not "see" rows recently inserted into the tablex?
> 
> Thanks,
> Maurice

They do "see" those rows. Are you sure that the inner join with tab_Y is not 
causing the problem? Just a guess...

-- 
Terry Lee Tucker
tel: (336) 372-5432; cell: (336) 404-6897
terry@xxxxxxxxxxxxxxx

-- 
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