Re: Best way to restrict detail rows?

From: "Scott Marlowe" <scott(dot)marlowe(at)gmail(dot)com>
To: "Christopher Maier" <maier(at)med(dot)unc(dot)edu>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Best way to restrict detail rows?
Date: 2008-12-08 21:28:29
Message-ID: dcc563d10812081328i5c0630afr662656e910cd26ba@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Mon, Dec 8, 2008 at 1:56 PM, Christopher Maier <maier(at)med(dot)unc(dot)edu> wrote:
> I have a "master-detail" kind of situation, as illustrated here:
>
> CREATE TABLE master(
> id SERIAL PRIMARY KEY,
> foo TEXT
> );
>
> CREATE TABLE detail(
> id SERIAL PRIMARY KEY
> master BIGINT NOT NULL REFERENCES master(id),
> bar TEXT
> );
>
> (this is a simplification, of course)
>
> I would like a way to restrict the addition of new detail records, but only
> after the initial detail records have been inserted into the system.

After you create the table do something like this:

create rule detail_no_insert as on insert to detail do nothing;
create rule detail_no_update as on update to detail do nothing;

poof. no more updates or inserts work. Note that copy will still
work, as it doesn't fire rules. So, you can update the data with
copy, and otherwise not touch it.

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Scott Marlowe 2008-12-08 21:29:49 Re: Best way to restrict detail rows?
Previous Message Christopher Maier 2008-12-08 20:56:57 Best way to restrict detail rows?