pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Joost Kraaijeveld <J.Kraaijeveld@Askesis.nl>
To: pgsql-sql@postgresql.org
Subject: Transactional behaviour with trigger
Date: Sun, 17 Sep 2006 14:32:10 +0200
Message-ID: <1158496330.6107.17.camel@panoramix> (raw)

Hi,

I create two records in a transaction in two different tables: customer
and contactaddress. customer has a foreign key to contactaddress.

I also have third table, customeraddress, which is a materialized view
of the join of customer and contactaddress

For the table customer I have a trigger(function) that inserts a record
in this third table (which works OK as the record is added):

....
INSERT INTO customeraddress(customer, customernumber, lastname, zipcode, city,housenumber, address) 
VALUES(NEW.objectid,NEW.customernumber,NEW.lastname,NULL,NULL,NULL,NULL);


For the contactaddress I also have a trigger(function) that should
update the record in the third table with the additional info of the
contactaddress:

....
SELECT INTO customer_record objectid FROM prototype.customers WHERE contactaddress = NEW.objectid;
IF customer_record.objectid IS NOT NULL THEN
UPDATE customeraddress set zipcode = NEW.zipcode, city = NEW.city, housenumber = NEW.housenumber , address = NEW.objectid 
WHERE customer = customer_record.objectid;

This last trigger is executed but customer_record.objectid seems to be
always NULL as if the the customer record is not visible. Is that
correct or is there something wrong with the SQl above?

In other words:

1. start transaction
2. add customer record
3. fire customer insert trigger -> copy record to materialized view table
4. add contactaddress record
5. fire contactaddress insert trigger -> update record in materialized view table -> no customer record???
6. end transction

TIA


-- 
Groeten,

Joost Kraaijeveld
Askesis B.V.
Molukkenstraat 14
6524NB Nijmegen
tel: 024-3888063 / 06-51855277
fax: 024-3608416
web: www.askesis.nl



view thread (3+ messages)  latest in thread

Message-ID: <1158496330.6107.17.camel@panoramix>
Permalink:  ../1158496330.6107.17.camel@panoramix/
Also on:    postgresql.org/message-id/1158496330.6107.17.camel@panoramix

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: J.Kraaijeveld@Askesis.nl
  Subject: Re: Transactional behaviour with trigger
  In-Reply-To: <1158496330.6107.17.camel@panoramix>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox