Thread: Need information about Foreign Key created Triggers

Need information about Foreign Key created Triggers

From
"Jean-Francois Leveque"
Date:
I created a Foreign Key (REFERENCES) constraint on
a table like this (some columns ommited) :
CREATE TABLE tablename ( id_tablename       INTEGER DEFAULT nextval('id_tablename_seq'), tablename_parent INTEGER
CONSTRAINTtablename_parent_fk   REFERENCES tablename (id_tablename), CONSTRAINT tablename_pk PRIMARY KEY
(id_tablename)
);

When I pg_dump, I can see three triggers :
The first calls RI_FKey_check_ins AFTER INSERT OR UPDATE,
the second one calls RI_FKey_noaction_del AFTER DELETE,
the third one calls RI_FKey_noaction_upd AFTER UPDATE.

All the triggers and procedure calls have the same parameters.


I browsed the docs, looked at :
http://techdocs.postgresql.org/techdocs/hackingreferentialintegrity.php

and asked pgsql-docs but I couldn't find what they
really do. Can someone give me information about
those Triggers created for FKey RI ?


Best Regards,

Jean-Francois Leveque


______________________________________________________________________
Sur WebMailS.com, mon adresse de courrier �lectronique gratuite.
Service multilingue, s�r, et permanent. http://www.webmails.com/


Re: Need information about Foreign Key created Triggers

From
Stephan Szabo
Date:
On Fri, 8 Jun 2001, Jean-Francois Leveque wrote:

> 
> I created a Foreign Key (REFERENCES) constraint on
> a table like this (some columns ommited) :
> CREATE TABLE tablename (
>   id_tablename       INTEGER DEFAULT nextval('id_tablename_seq'),
>   tablename_parent INTEGER CONSTRAINT tablename_parent_fk
>     REFERENCES tablename (id_tablename),
>   CONSTRAINT tablename_pk PRIMARY KEY (id_tablename)
> );
> 
> When I pg_dump, I can see three triggers :
> The first calls RI_FKey_check_ins AFTER INSERT OR UPDATE,
> the second one calls RI_FKey_noaction_del AFTER DELETE,
> the third one calls RI_FKey_noaction_upd AFTER UPDATE.
> 
> All the triggers and procedure calls have the same parameters.
> 
> 
> I browsed the docs, looked at :
> http://techdocs.postgresql.org/techdocs/hackingreferentialintegrity.php
> 
> and asked pgsql-docs but I couldn't find what they
> really do. Can someone give me information about
> those Triggers created for FKey RI ?

It's in the archives somewhere, but...

The functions take the same args, but the name of the functions says
what it's going to do and the table that the trigger and the action
(AFTER ?) tells you when it does it.

RI_FKey_check_ins checks a newly inserted or updated row in the FKtable against the PK table rows.
RI_FKey_<something>_del does the referential action <something>,in your case no action, when a row is deleted from the
PKtable.
 
RI_FKey_<something>_upd does the referential action <something>,in your case no action, when a row is updated in the PK
table.

IIRC, The arguments are name of constraint, fk table, pk table, match type,fk col 1, pk col1, ... fk col n, pk col n