Re: concurent updates

From: A_Schnabel(at)t-online(dot)de (Andre Schnabel)
To: "Steve SAUTETNER" <ssa(at)informactis(dot)com>, <pgsql-general(at)postgresql(dot)org>
Subject: Re: concurent updates
Date: 2001-07-26 16:26:27
Message-ID: 003b01c115ef$b8e70740$0201a8c0@aschnabel.homeip.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

if you define the foreign key with "ON UPDATE CASCADE" you don't have to
worry about updating table2.
Would look like this:

the tables:
create table table1 (id int primary key, col1 int);
create table table2 (id int primary key references table1(id) ON UPDATE
CASCADE, col2 int);

the (one and only) UPDATE:
update table1 set id = 1001 where id = 1;

Your 2nd UPDATE will be done automatically.

The other solution for your problem is less elegant.
First INSERT a new record ( 1001 , x) for each row (1, x) in table1 into
table1
then UPDATE table2
last DELETE all records (1, x) from table1

Would look like:
BEGIN;
INSERT INTO table1 SELECT 1001, col1 FROM table1 WHERE id=1;
UPDATE table2 set id = 1001 WHERE id = 1;
DELETE FROM table1 where id=1;
COMMIT;

Hope this would help,
Andre

----- Original Message -----
From: Steve SAUTETNER
To: pgsql-general(at)postgresql(dot)org
Sent: Thursday, July 26, 2001 11:19 AM
Subject: [GENERAL] concurent updates

hi everybody !

I've got a little problem when updating a primary key in two table
where the primary key of the one is a foreign key from the second :

here are the 2 tables :

create table table1 (id int primary key, col1 int);
create table table2 (id int primary key references table1(id), col2 int);

and the 2 updates :

1) update table2 set id = 1001 where id = 1;
2) update table1 set id = 1001 where id = 1;

i can't execute them separately because of an integrity constraint
violation.
i've got the same error in a BEGIN / COMMIT block containing the updates.

Does any one see how two help me ?

thanks.

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Barry Lind 2001-07-26 16:34:31 Re: [SQL] When PostgreSQL compliant JDBC 2.0? (Batch updates)
Previous Message wsheldah 2001-07-26 15:24:05 Re: concurent updates