Rules and referential integrity
От | |
---|---|
Тема | Rules and referential integrity |
Дата | |
Msg-id | 199911121528.MAA07053@ant.utdt обсуждение исходный текст |
Ответы |
Re: [SQL] Rules and referential integrity
|
Список | 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 по дате отправления: