You have to create t2 as following: CREATE TABLE t2 (id int, grp int references t1(id) ON UPDATE CASCADE ON DELETE CASCADE, info text); Through the cascade commands Postgresql will check the t2 table on rows which have to be deleted or updated according to your changes in t1. For changing the existing table take a look at the ALTER TABLE commands. Greetings, Matthias > -----Original Message----- > From: pgsql-general-owner@xxxxxxxxxxxxxx > [mailto:pgsql-general-owner@xxxxxxxxxxxxxx] On Behalf Of Rafal Pietrak > Sent: Tuesday, October 10, 2006 3:59 PM > To: pgsql-general@xxxxxxxxxxxxxx > Subject: [GENERAL] adjusting primary key > > > Hi All, > > I have two tables: > CREATE TABLE t1 (id int not null unique, info text); > CREATE TABLE t2 (id int, grp int references t1(id), info text); > > Now, at certain point (both tables populated with tousends of records, > and continuesly referenced by users), I need to adjust the value of an > ID field of table T1. > > How can I do that? On the life system? > > Obvious solution like: > UPDATE t1 SET id=239840 where id=9489; > or in fact: > UPDATE t1 SET id=id+10000 where id<1000; > wouldn't work, regretably. > > Naturally I need to have column t2(grp) adjusted accordingly > - within a > single transaction. > > Asking this, because currently I've learned, that I can adjust the > structure of my database (add/remove columns at will, reneme those, > etc.), but I'm really stuck with 'looking so simple' task. > > Today I dump the database and perl-edit whatever's necesary > and restore > the database. But that's not a solution for life system. > > Is there a way to get this done? life/on-line? > -- > -R > > ---------------------------(end of > broadcast)--------------------------- > TIP 1: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@xxxxxxxxxxxxxx > so that your > message can get through to the mailing list cleanly >