In response to your suggestion about possibly being able to use "create constraint trigger," I have tried the following:
I have the following trigger function (probably not all that important what it does...):
create function prd_parm_tf_iu ()
returns opaque as '
declare
trec record;
baseholder varchar;
begin
select into trec min(pos)
as n,max(pos) as m,count(*) as c
from prd_parm where new.base = base;
if trec.n != 1 or trec.m
!= trec.c then
raise
exception \'Parameters for base % not in order\', new.base;
end if;
return new;
end;' language 'plpgsql';
This seems to work pretty good:
create trigger prd_part_tr_iu after insert or update on prd_parm
for each row execute procedure prd_parm_tf_iu();
But when I create it with "create constraint trigger" as shown next, the trigger doesn't seem to be invoked. It says it is created, but it allows data to pass that would not be allowed with the "create trigger." So I'm assuming I'm doing something wrong.
create constraint trigger prd_part_tr_iu after insert or update
on prd_parm
deferrable initially deferred
for each row execute procedure prd_parm_tf_iu();
Any ideas?
Also, its not clear to me how to drop a trigger created with "create constrataint trigger."
It would be very helpful if I could figure out how to make my triggers deferred. There are things stored in one table that have to be a certain way if other things are a certain way in a related table. It is more than what foreign key relationships can handle. It would really be great if I could figure out how to have the backend monitor the consistency of these details.
Without deferral, I can check the consistency in one direction. But if I try to constrain it in both directions, I get into a problem where I can't update either table without breaking the constraints. I'm guessing that if I can get deferral to work, I should be able to update both tables in a transaction and be OK.
Kyle
begin:vcard n:Bateman;Kyle tel;fax:801-377-8096 tel;work:801-377-8033x101 x-mozilla-html:FALSE url:www.actiontarget.com org:Action Target Inc adr:;;PO Box 636;Provo;UT;84603;US version:2.1 email;internet:[EMAIL PROTECTED] title:President x-mozilla-cpt:;-15520 fn:Kyle Bateman end:vcard