Re: ON DELETE CASCADE - Mailing list pgsql-sql
From | Marie G. Tuite |
---|---|
Subject | Re: ON DELETE CASCADE |
Date | |
Msg-id | IGELKLINGDMODABPOOFEAEACCPAA.marie.tuite@edisonaffiliates.com Whole thread Raw |
In response to | ON DELETE CASCADE (Tim Perdue <tim@perdue.net>) |
Responses |
Re: ON DELETE CASCADE
|
List | pgsql-sql |
Here is a function that I use to list fk(triggers) on a table. Execute the function to get the trigger name and then - drop trigger "trigger_name" on table_name; hth -- Version 1.0, June 2002 -- Marie G. Tuite -- Function lists FK by table. -- To execute: -- begin;select fn_list_fk('table_name'); -- fetch all from "<cursor_name>"; end; create or replace function fn_list_fk(name) returns refcursor as ' declare table_in alias for $1; rc refcursor; begin open rc for select tgname as trigger_name_sys ,tgconstrname as trigger_name_given ,b.relname as table_name ,tgisconstraint as ri ,c.relname as parent_table from pg_triggera, pg_class b, pg_class c where a.tgrelid=b.oid and b.relname=table_in and tgconstrrelid = c.oid; return rc; end; ' language 'plpgsql' ; > -----Original Message----- > From: pgsql-sql-owner@postgresql.org > [mailto:pgsql-sql-owner@postgresql.org]On Behalf Of Tim Perdue > Sent: Thursday, December 12, 2002 11:01 AM > To: pgsql-sql@postgresql.org > Subject: [SQL] ON DELETE CASCADE > > > I'm trying to comb through my database and add ON DELETE CASCADE to a > number of tables where I already have fkeys in place, but I'm having a > hard time. > > ALTER TABLE project_task DROP CONSTRAINT > "project_task_group_project_id_f" RESTRICT; > > ERROR: ALTER TABLE / DROP CONSTRAINT: project_task_group_project_id_f > does not exist > > ALTER TABLE project_task > ADD CONSTRAINT projecttask_groupprojectid_fk > FOREIGN KEY (group_project_id) > REFERENCES project_group_list(group_project_id) ON DELETE CASCADE; > NOTICE: ALTER TABLE will create implicit trigger(s) for FOREIGN KEY > check(s) > ALTER > > That command works, but now I think I have 2x as many triggers as I > want. How do I get rid of the original triggers? > > > alexandria=# \d project_task > Table "project_task" > Column | Type | Modifiers > ------------------+------------------+----------------------- > project_task_id | integer | not null default > nextval('project_task_pk_seq'::text) > group_project_id | integer | not null default '0' > summary | text | not null default '' > details | text | not null default '' > percent_complete | integer | not null default '0' > priority | integer | not null default '0' > hours | double precision | not null default '0.00' > start_date | integer | not null default '0' > end_date | integer | not null default '0' > created_by | integer | not null default '0' > status_id | integer | not null default '0' > Indexes: projecttask_projid_status > Primary key: project_task_pkey > Triggers: RI_ConstraintTrigger_51030049, > RI_ConstraintTrigger_51030047, > RI_ConstraintTrigger_4305858, > RI_ConstraintTrigger_4305852, > RI_ConstraintTrigger_4305846 > > After adding the new foreign key: > > Triggers: RI_ConstraintTrigger_51364957, ***new > RI_ConstraintTrigger_51030049, > RI_ConstraintTrigger_51030047, > RI_ConstraintTrigger_4305858, > RI_ConstraintTrigger_4305852, > RI_ConstraintTrigger_4305846 > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) >