Re: ON DELETE CASCADE
| От | Marie G. Tuite |
|---|---|
| Тема | Re: ON DELETE CASCADE |
| Дата | |
| Msg-id | IGELKLINGDMODABPOOFEAEACCPAA.marie.tuite@edisonaffiliates.com обсуждение исходный текст |
| Ответ на | ON DELETE CASCADE (Tim Perdue <tim@perdue.net>) |
| Ответы |
Re: ON DELETE CASCADE
|
| Список | 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)
>
В списке pgsql-sql по дате отправления: