Re: [SQL] Rules and referential integrity

From: wieck(at)debis(dot)com (Jan Wieck)
To: mig(at)utdt(dot)edu
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Rules and referential integrity
Date: 1999-11-12 16:13:50
Message-ID: m11mJKg-0003kLC@orion.SAPserv.Hamburg.dsh.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)debis(dot)com (Jan Wieck) #

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Klein, Robert 1999-11-12 16:37:47 Trying to move a 6.1 database to 6.5
Previous Message <Miguel Sofer 1999-11-12 15:13:55 Rules and referential integrity