Skip site navigation (1) Skip section navigation (2)

Re: Mechanics of Update:Cascade

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: beyaRecords - The home Urban music <uzo(at)beya-records(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Mechanics of Update:Cascade
Date: 2004-01-31 15:26:01
Message-ID: 20040131072341.B91270@megazone.bigpanda.com (view raw or flat)
Thread:
Lists: pgsql-sql
On Sat, 31 Jan 2004, beyaRecords - The home Urban music wrote:

> Hi,
> could someone please explain to me the mechanics of an UpDate:Cascade?
> Delete:Cascade I fully understand but not Update. I have 2 tables A and
> B. On B I have created a foreign key on user_id in both B and A for
> Update and Delete cascade. If I delete from A it deletes all from B. If
> I update A what happens in B?

Basically it means that if you update the referenced key in A, the
associated referencing values in B changes as well so as to attempt to
keep the associations the same.

Here's an example:

sszabo=# create table a(a int primary key, b int);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "a_pkey"
for table "a"
CREATE TABLE
sszabo=# create table b(a_key int references a on update cascade, b int);
CREATE TABLE
sszabo=# insert into a values (3, 4);
INSERT 535937 1
sszabo=# insert into a values (4, 5);
INSERT 535938 1
sszabo=# insert into b values (3,104);
INSERT 535939 1
sszabo=# insert into b values (4,105);
INSERT 535940 1
sszabo=# select * from a;
 a | b
---+---
 3 | 4
 4 | 5
(2 rows)

sszabo=# select * from b;
 a_key |  b
-------+-----
     3 | 104
     4 | 105
(2 rows)

sszabo=# update a set a=a+100;
UPDATE 2
sszabo=# select * from a;
  a  | b
-----+---
 103 | 4
 104 | 5
(2 rows)

sszabo=# select * from b;
 a_key |  b
-------+-----
   103 | 104
   104 | 105
(2 rows)


In response to

pgsql-sql by date

Next:From: Richard HuxtonDate: 2004-01-31 17:42:00
Subject: Re: Mechanics of Update:Cascade
Previous:From: Stephan SzaboDate: 2004-01-31 15:23:36
Subject: Re: 'select nextval('seq_name');' in a function ?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group