Re: Trigger

From: "Raigo Lukk" <l950681(at)ttu(dot)ee>
To: pgsql-general(at)postgreSQL(dot)org
Subject: Re: Trigger
Date: 2000-03-07 18:04:27
Message-ID: 77360BFD1645.AAA3C8F@mail.ttu.ee
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi

> twice inside of one transaction (WRT key changes), it's possible to
> fool the trigger and end up with inconsistent data in a multiuser
> environment.

OK let's assume that customer is not deleted while order is
enetered. At my work I have used InterBase quite a lot. Up to IB 5
there was also no foreign keys, so it had to be done with triggers
just like in PostgreSQL. So when using IB 4 I usually did
something like this:

CREATE EXCEPTION CHILD_INSERT_RESTRICT "Cannot
INSERT ORDER because CUSTOMER does not exist in
CUSTOMER table";

CREATE TRIGGER BI_ORDER FOR ORDER BEFORE INSERT
AS

DECLARE VARIABLE numrows INTEGER;
BEGIN
select count(distinct CustomerID)
from customer
where CustomerID=NEW.CustomerID
into numrows;
IF (numrows = 0 ) THEN
BEGIN
EXCEPTION CHILD_INSERT_RESTRICT;
END

END

I think there is some small syntax differences in PostgreSQL.
So, can somebody please put this into PostgreSQL syntax for me?
I searched the manuals but found no Exeption ... is it possible to
use Exceptions in PostgreSQL?
Also, does there excist special aliases like NEW and OLD in
PostgreSQL?

Thanks
Raigo

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Marten Feldtmann 2000-03-07 18:58:58 Re: [GENERAL] 50 MB Table
Previous Message Francis Lachapelle 2000-03-07 17:49:51