Re: check constraints - Mailing list pgsql-admin

From Oliver Elphick
Subject Re: check constraints
Date
Msg-id 1091633840.31602.2924.camel@linda
Whole thread Raw
In response to check constraints  (Jodi Kanter <jkanter@virginia.edu>)
List pgsql-admin
On Wed, 2004-08-04 at 15:50, Jodi Kanter wrote:
> I have little experience with postgres' check constraint features and
> was hoping to get some guidance. We have a table which houses links to
> various user files. The PK of this table is fi_pk. There are several
> tables in which a foreign key (fi_fk) to this field exist. We are
> implementing a feature which will allow users to remove old files from
> their repositories. It would be nice to have a check that goes out to
> all tables that have this fi_fk field and checks to see if the fi_pk
> for their particular record exists and would then not allow the
> deletion if a link occurs somewhere.
> I realize that I can do this with specific SQL in the code but was
> wondering if it's possible to implement a sort of general database
> wide check of this nature. That way if future tables are added with
> this FK field then the code would not have to be altered.

You do it when you define the foreign key in the other tables:

   CREATE other_table (
       ...,
       fi_fk   ...   REFERENCES table (fi_pk)
                        ON UPDATE CASCADE
                        ON DELETE RESTRICT,
       ...
   );

This says that if the foreign key field changes its value in table the
corresponding value in other_table should be changed too.  If an attempt
is made to delete the value in table when it is referenced by any rows
in other_table, the deletion will not be permnitted.

--
Oliver Elphick                                          olly@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver
GPG: 1024D/A54310EA  92C8 39E7 280E 3631 3F0E  1EC0 5664 7A2F A543 10EA
                 ========================================
     "And not only so, but we glory in tribulations also;
      knowing that tribulation worketh patience; And
      patience, experience; and experience, hope."
                                        Romans 5:3,4


pgsql-admin by date:

Previous
From: Jodi Kanter
Date:
Subject: check constraints
Next
From: Christian Platzer
Date:
Subject: pg_dump: schema with OID 1 does not exist