Rules and referential integrity - Mailing list pgsql-sql

From
Subject Rules and referential integrity
Date
Msg-id 199911121528.MAA07053@ant.utdt
Whole thread Raw
Responses Re: [SQL] Rules and referential integrity  (wieck@debis.com (Jan Wieck))
List pgsql-sql
I seem to have found a way to use the rule system for referential
integrity checks.

The manual says (in the "Rules vs Triggers part) 
"It is possible, to place a qualified rule that rewrites a query to
NOTHING if the value of a column does not appear in another table. But
then the data is silently thrown away and that's not a good idea. If
checks for valid values are required, and in the case of an invalid
value an error message should be generated, it must be done by a
trigger for now." 

Now: why not define a function (in pltcl; could be something else?)create function err(bpchar) returns bpchar as 'error
$1'language 'pltcl'
 

Then, if the value of a column does not appear in another table, you
could rewrite the query to (for instance)     select err('your message')

This will raise a PGRES_FATAL_ERROR , with error message
ERROR:  pltcl: your message

So: it is possible. Why it is better (or worse) than a trigger, I do
not know. Views on that?








pgsql-sql by date:

Previous
From: " Date:
Subject: Rules and referential integrity
Next
From: wieck@debis.com (Jan Wieck)
Date:
Subject: Re: [SQL] Rules and referential integrity