Re: Deletion Recursively

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Michael Dyrby Jensen <dyrby(at)nork(dot)auc(dot)dk>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Deletion Recursively
Date: 2001-10-29 17:51:19
Message-ID: 20011029094657.P9662-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Fri, 26 Oct 2001, Michael Dyrby Jensen wrote:

> Greetings.
>
> I am fairly new with the postgresql database.
> And I have run into a problem, which I hope someone can help me with.
>
> I am doing a school project, where I have chosen to learn to use this powerful tool, so I am using it to
> handle a fictive company of banner advertising.
>
> I need to register Advertisers, who got some Campaigns, and these
> campaigns have banners.
> I have an Advertiser table, a campaign table and a banner table.
>
> an advertiser hold references to the campaigns that he own, and the
> campaigns have references to the banners that they own.
>
> My question is then: "How do I make the Database delete the campaigns
> and banners linked to the advertiser, when I delete him?"
>
> A small example would really really help me alot.
> (with small explanation too ofcause =) )

If I'm understanding your problem correctly...
(untested, but I think I got the syntax stuff right)

create table advertiser (
advid serial primary key,
name varchar,
...
);

create table campaigns (
campid serial primary key,
advid integer references advertisers(advid)
on delete cascade on update cascade,
-- Make a foreign key constraint to the advertiser
-- table such that a campaign must either have a
-- NULL advid or a valid one at all times. If the
-- advid is updated in advertiser, all of the ones
-- in campaign that references that one are updated
-- (on update cascade). If a row is deleted in
-- advertiser, all rows in campaign that reference
-- that one are deleted (on delete cascade)
...
);

create table banners (
bannerid serial,
campid integer references campaigns(campid)
on delete cascade on update cascade,
...
);

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Josh Berkus 2001-10-29 18:30:23 Re: PostgreSQL, Java & JDBC
Previous Message Stephan Szabo 2001-10-29 17:45:56 Re: delete queires