X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (neptune.hub.org [200.46.204.2]) by svr1.postgresql.org (Postfix) with ESMTP id 1187ED1D8A0 for ; Fri, 16 Jan 2004 05:30:05 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024) with ESMTP id 55149-10 for ; Fri, 16 Jan 2004 01:29:35 -0400 (AST) Received: from ns.tirupati.biz (unknown [64.239.5.38]) by svr1.postgresql.org (Postfix) with SMTP id EF570D1B47D for ; Fri, 16 Jan 2004 01:29:33 -0400 (AST) Received: (qmail 1192 invoked from network); 16 Jan 2004 06:28:31 -0000 Received: from softdnserror (HELO server2k) (61.11.69.59) by ns.tirupati.biz with SMTP; 16 Jan 2004 06:28:31 -0000 Received: from 192.168.50.15 by server2k ([192.168.50.102] running VPOP3) with SMTP for ; Fri, 16 Jan 2004 11:04:43 +0530 X-MSReally-From: denis@coralindia.com Message-ID: <00ad01c3dbf1$f596ae00$0f32a8c0@denisnew> From: denis@coralindia.com To: References: <006601c3dbea$02295800$0f32a8c0@denisnew> <20040115211617.C53092@megazone.bigpanda.com> Subject: Re: Initially Deffered - FK Date: Fri, 16 Jan 2004 11:01:13 +0530 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 X-Server: VPOP3 V1.5.0 - Registered X-Virus-Scanned: by amavisd-new at postgresql.org X-Archive-Number: 200401/153 X-Sequence-Number: 16546 Hi Stephan, Thanks for your reply. But, you will agree that result should be same JUST BEFORE and JUST AFTER commit ( assuming no one is working on the database and i am the only user connected.) Till, the commit ( or end ) is issued, if you query ADDRESS, you will get 4 rows. This is expected result. But, just issue commit and see, the result gets changed !! Is this behaviour rectified / changed in later release of PG (say 7.3 or 7.4) ? Any help will be appreciated. Thanx Denis ----- Original Message ----- From: "Stephan Szabo" To: "Denis" Cc: Sent: Friday, January 16, 2004 10:48 AM Subject: Re: [SQL] Initially Deffered - FK > > On Fri, 16 Jan 2004, Denis wrote: > > create table contact (id int constraint contact_pk primary key, name > > text ); > > create table address (id int constraint address_fk references contact(id) on > > delete cascade initially deferred, > > city text, > > pin text); > > > > Lets.. insert few data in it.. > > > > insert into contact values (1, 'Denis'); > > insert into contact values (2, 'Anand'); > > insert into contact values (3, 'Debatosh'); > > insert into contact values (4, 'Pradeep'); > > > > insert into address values (1,'Howrah','711102'); > > insert into address values (2,'Kolkata','700001'); > > insert into address values (3,'Jadavpur','700005'); > > insert into address values (4,'Mumbai','400002'); > > > > Now, below gives me the correct result. > > > > select * from contact; select * from address; > > > > acedg=> select * from contact; select * from address; > > id | name > > ----+---------- > > 1 | Denis > > 2 | Anand > > 3 | Debatosh > > 4 | Pradeep > > (4 rows) > > > > id | city | pin > > ----+----------+-------- > > 1 | Howrah | 711102 > > 2 | Kolkata | 700001 > > 3 | Jadavpur | 700005 > > 4 | Mumbai | 400002 > > (4 rows) > > > > BUT, the problem starts when i issue the following set of DMLs in > > transaction: > > > > begin; > > delete from contact where id=1; > > insert into contact values (1, 'Denis'); > > delete from address where id=1; /* this is not required.. but my > > app.fires. Should not have any impact */ > > insert into address values (1,'Howrah','711102'); > > end; > > > > It gives me the result: > > > > acedg=> select * from contact; select * from address; > > id | name > > ----+---------- > > 2 | Anand > > 3 | Debatosh > > 4 | Pradeep > > 1 | Denis > > (4 rows) > > > > id | city | pin > > ----+----------+-------- > > 2 | Kolkata | 700001 > > 3 | Jadavpur | 700005 > > 4 | Mumbai | 400002 > > (3 rows) > > > > Where is my lastly inserted row ?? i.e. > > insert into address values (1,'Howrah','711102'); > > Definitional difference. We currently treat a > request to defer the constraint to mean defer > referential actions as well, thus the inserted > address is removed when the on delete cascade > occurs after it at transaction end. Noone's > been entirely sure whether this is correct > or not per spec as I remember.