pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Magnus Sjöstrand <mange@NO-SPAMORAMA.mjaunet.org>
To: pgsql-sql@postgresql.org
Subject: How do I access the current row from a trigger?
Date: Wed, 03 Jul 2002 10:28:14 +0200
Message-ID: <3D22B59E.2000503@NO-SPAMORAMA.mjaunet.org> (raw)

Hi,

I have a table as:
create table sections (
     id           serial not null primary key,
     parent_id    references sections(id)
);

there is only one row where the parent_id is NULL, and that is the root 
section, all others refers to a section. Now I want to create a trigger, 
so that whenever I delete a section I can delete all sections that has 
the deleted section as parent, which in turn will run the triggers for 
the deleted sections. Thus I will be able to clear an entire branch with 
only one SQL command from the client.

consider the content:
id          parent_id
0           NULL
1           0
2           1
3           2

and when I run the command
delete from sections where id=1;

I want this to trigger a function which will do
delete from sections where parent_id=( 'id' field in the current row[1] )

which in turn will trigger the same function to do
delete from sections where parent_id=( 'id' field in the current row[2] )

is there any way to do this in PostgreSQL? I couldn't find a way of 
refering to the current row in a trigger in the postgresql reference.

Sincerely,
/Magnus Sjöstrand






view thread (2+ messages)  latest in thread

Message-ID: <3D22B59E.2000503@NO-SPAMORAMA.mjaunet.org>
Permalink:  ../3D22B59E.2000503@NO-SPAMORAMA.mjaunet.org/
Also on:    postgresql.org/message-id/3D22B59E.2000503@NO-SPAMORAMA.mjaunet.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: mange@NO-SPAMORAMA.mjaunet.org
  Subject: Re: How do I access the current row from a trigger?
  In-Reply-To: <3D22B59E.2000503@NO-SPAMORAMA.mjaunet.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox