Re: Help creating rules/triggers/functions - Mailing list pgsql-sql

From Stephan Szabo
Subject Re: Help creating rules/triggers/functions
Date
Msg-id Pine.BSF.4.21.0103020901240.51118-100000@megazone23.bigpanda.com
Whole thread Raw
In response to Help creating rules/triggers/functions  (Blaise Carrupt <bc@mjtsa.com>)
List pgsql-sql
If you're only doing a simple check for reference, why not use
foreign keys?

In general however, you probably want to use plpgsql to define the
trigger.  And trigger functions don't take parameters in the normal 
sense, the function should be created taking no args and returning
opaque; the parameters you add in create trigger are passed in
TG_ARGS (i believe).  You might want to look at the user and programmer
guides for more information on trigger functions.

On Tue, 27 Feb 2001, Blaise Carrupt wrote:

> Hi all !
> 
> I use PostgreSQL 7.0.2 on a HP-UX system.
> 
> I would like to create a simple function and a simple trigger (or rule) that 
> deny a delete from a table if the row is referenced in another table.
> 
> I though it should look like this (from my Ingres experience... :) :
> 
> create function A_del(int4 i_id)
> BEGIN
>    SELECT id
>      FROM b
>      where a_id = :i_id;
>      
>    if rowcount > 0 then
>     RAISE EXCEPTION "not allowed !"
>    end if;
> END
> 
> 
> create trigger before delete from A for each row execute procedure A_del(old.id)
> 
> 
> But it seems to be much more complicated with Postgres (create a C function 
> using CurrentTriggerData,...). May I have missed something or is it really much 
> more complicated ?




pgsql-sql by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: SQL copy from csv with explicit field ordering
Next
From: Tom Lane
Date:
Subject: Re: union & subqueries