Re: [SQL] Rules and referential integrity
От | wieck@debis.com (Jan Wieck) |
---|---|
Тема | Re: [SQL] Rules and referential integrity |
Дата | |
Msg-id | m11mJKg-0003kLC@orion.SAPserv.Hamburg.dsh.de обсуждение исходный текст |
Ответ на | Rules and referential integrity ("<Miguel Sofer" <mig@utdt.edu>) |
Список | pgsql-sql |
> 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? Depends on the data and usage. If only few tuples are affected by a statement, a trigger will usually do a better job. Especially if the path to find that tuple is very complicated, because the rule has to follow this path another time. OTOH if one statement affects thousands of rows, a rule will perform better because it is executed in one internal extra query instead of invoking the trigger for each single tuple. There is no general "this is better than that". Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #========================================= wieck@debis.com (Jan Wieck) #
В списке pgsql-sql по дате отправления: