Thread: adding on delete cascade constraint?

adding on delete cascade constraint?

From
Jean-Christian Imbeault
Date:
Currently I have a table defined as such:

TAL=# \d internal_keywords
Table "public.internal_keywords"
  Column  |  Type   | Modifiers
---------+---------+-----------
  keyword | text    | not null
  pid     | integer | not null
Indexes: internal_keywords_pkey primary key btree (keyword, pid)
Foreign Key constraints: $1 FOREIGN KEY (pid) REFERENCES products(id) ON
UPDATE NO ACTION ON DELETE NO ACTION

How can I change the ON DELETE action to CASCADE for column pid?

I've check the alter table documentation but cannot find any reference
to this.

Thanks,

Jean-Christian Imbeault


Re: adding on delete cascade constraint?

From
Oliver Elphick
Date:
On Fri, 2003-09-19 at 11:09, Jean-Christian Imbeault wrote:
> Currently I have a table defined as such:
>
> TAL=# \d internal_keywords
> Table "public.internal_keywords"
>   Column  |  Type   | Modifiers
> ---------+---------+-----------
>   keyword | text    | not null
>   pid     | integer | not null
> Indexes: internal_keywords_pkey primary key btree (keyword, pid)
> Foreign Key constraints: $1 FOREIGN KEY (pid) REFERENCES products(id) ON
> UPDATE NO ACTION ON DELETE NO ACTION
>
> How can I change the ON DELETE action to CASCADE for column pid?
>
> I've check the alter table documentation but cannot find any reference
> to this.

Drop the constraint; then add an amended one.

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "Bring ye all the tithes into the storehouse, that
      there may be meat in mine house, and prove me now
      herewith, saith the LORD of hosts, if I will not open
      you the windows of heaven, and pour you out a
      blessing, that there shall not be room enough to
      receive it."           Malachi 3:10


Re: adding on delete cascade constraint?

From
Jean-Christian Imbeault
Date:
Oliver Elphick wrote:

>>Foreign Key constraints: $1 FOREIGN KEY (pid) REFERENCES products(id) ON
>>UPDATE NO ACTION ON DELETE NO ACTION
>
> Drop the constraint; then add an amended one.

Ok, how do I drop the constraint, it has no name.

The documentation is rather poor on how to get the name of unamed
constraints:

"To remove a constraint you need to know its name. If you gave it a name
then that's easy. Otherwise the system assigned a generated name, which
you need to find out. The psql command \d tablename can be helpful here"

Secondly what is the correct syntax for adding a new constraint with ON
DELETE CASCADE?

Thanks,

Jean-Christian Imbeault



Re: adding on delete cascade constraint?

From
Oliver Elphick
Date:
On Fri, 2003-09-19 at 14:02, Jean-Christian Imbeault wrote:
> Oliver Elphick wrote:
>
> >>Foreign Key constraints: $1 FOREIGN KEY (pid) REFERENCES products(id) ON
> >>UPDATE NO ACTION ON DELETE NO ACTION
> >
> > Drop the constraint; then add an amended one.
>
> Ok, how do I drop the constraint, it has no name.

From what you quoted above, its name is $1

ALTER TABLE xxx DROP CONSTRAINT "$1"; -- double quotes required since
                                      -- $1 is an identifier

> Secondly what is the correct syntax for adding a new constraint with ON
> DELETE CASCADE?

ALTER TABLE xxx ADD CONSTRAINT "$1" FOREIGN KEY (pid) REFERENCES
products(id) ON UPDATE NO ACTION ON DELETE CASCADE;

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "Bring ye all the tithes into the storehouse, that
      there may be meat in mine house, and prove me now
      herewith, saith the LORD of hosts, if I will not open
      you the windows of heaven, and pour you out a
      blessing, that there shall not be room enough to
      receive it."           Malachi 3:10


Re: adding on delete cascade constraint?

From
Richard Huxton
Date:
On Friday 19 September 2003 14:02, Jean-Christian Imbeault wrote:
> Oliver Elphick wrote:
> >>Foreign Key constraints: $1 FOREIGN KEY (pid) REFERENCES products(id) ON
> >>UPDATE NO ACTION ON DELETE NO ACTION
> >
> > Drop the constraint; then add an amended one.
>
> Ok, how do I drop the constraint, it has no name.

Its name is "$1" - use

DROP CONSTRAINT "$1" ...

> Secondly what is the correct syntax for adding a new constraint with ON
> DELETE CASCADE?

See the SQL command reference for ALTER TABLE. It's something like:

ALTER TABLE mytable ADD CONSTRAINT constraint_name FOREIGN KEY ... etc

--
  Richard Huxton
  Archonet Ltd