Обсуждение: Fw: Removing foreign key and adding sequence

Поиск
Список
Период
Сортировка

Fw: Removing foreign key and adding sequence

От
"Chad Thompson"
Дата:
 > Chad,
 >
 > > alter table lists rename to lists_bak;
 > >
 > > select * from lists_bak into lists;
 > >
 > > I can add the constraints and foreign key's back in that ARE necessary,
 my
 > > only worry (and mabey you can think of another worry) is that my
 sequence
 > > is no longer attached to the id field of my table.
 > >
 > > Is this the right approach, and if so, how do I add my sequence back
in?
 >
 > Simple:  when you re-create Lists, just make sure that the id is "DEFAULT
 > NEXTVAL('sequence_name')".  That's it.  Sequences are easy.

The id is a foreign key on other tables, so I dont want to reorder the
table.  You're saying that I wouldn't reorder if I did it this way?

 >
 > However, I think it might be easier just to drop the FKs.  What version
 are
 > you using?
 >


 7.32.  Can I just drop the foreign key?  That would be SO much easier :-)

Thanks
Chad


Re: Fw: Removing foreign key and adding sequence

От
Nabil Sayegh
Дата:
Am Don, 2003-06-26 um 19.28 schrieb Chad Thompson:

>  7.32.  Can I just drop the foreign key?  That would be SO much easier :-)

Since 7.3 it's very easy, but even with 7.2 you could:

7.3:
\d table_name
if the key is labeled with e.g. $1:
ALTER TABLE table_name DROP CONSTRAINT "$1";

7.2:
DROP TRIGGER "RI_ConstraintTrigger_123456" on table_name;

You have to do this 3 times, because a FK in < 7.3 where just 3
constraint triggers.

you can get the trigger names with
\d table_name
or
pg_dump db_name and searching the correct CONSTRAINT TRIGGER

HTH
--
 e-Trolley Sayegh & John, Nabil Sayegh
 Tel.: 0700 etrolley /// 0700 38765539
 Fax.: +49 69 8299381-8
 PGP : http://www.e-trolley.de


Re: Fw: Removing foreign key and adding sequence

От
"Chad Thompson"
Дата:
> >  7.32.  Can I just drop the foreign key?  That would be SO much easier
:-)
>
> Since 7.3 it's very easy, but even with 7.2 you could:
>
> 7.3:
> \d table_name
> if the key is labeled with e.g. $1:
> ALTER TABLE table_name DROP CONSTRAINT "$1";
> >

Hrm... What could I be doing wrong?

db=# \d lists
                                    Table "public.lists"
      Column      |         Type          |                    Modifiers

------------------+-----------------------+---------------------------------
-----------------
 id               | bigint                | not null default
nextval('"lists_id_seq"'::text)
 first_name       | character varying(50) |
 middle_initial   | character(1)          |
 last_name        | character varying(30) |

[SNIP]

         lol_id_idx btree (list_of_lists_id)
Triggers: RI_ConstraintTrigger_10337839,
          RI_ConstraintTrigger_10337842,
          RI_ConstraintTrigger_10337860

db=# alter table lists drop constraint "RI_ConstraintTrigger_10337839";
ERROR:  ALTER TABLE / DROP CONSTRAINT: RI_ConstraintTrigger_10337839 does
not exist
db=# alter table lists drop constraint RI_ConstraintTrigger_10337839;
ERROR:  ALTER TABLE / DROP CONSTRAINT: ri_constrainttrigger_10337839 does
not exist


Re: Fw: Removing foreign key and adding sequence

От
Nabil Sayegh
Дата:
Am Don, 2003-06-26 um 23.19 schrieb Chad Thompson:
> > >  7.32.  Can I just drop the foreign key?  That would be SO much easier
> :-)
> >
> > Since 7.3 it's very easy, but even with 7.2 you could:
> >
> > 7.3:
> > \d table_name
> > if the key is labeled with e.g. $1:
> > ALTER TABLE table_name DROP CONSTRAINT "$1";
> > >
>
> Hrm... What could I be doing wrong?

Your FK are 7.2 style (actually they are < 7.3)
(they are triggers)

> Triggers: RI_ConstraintTrigger_10337839,
>           RI_ConstraintTrigger_10337842,
>           RI_ConstraintTrigger_10337860

Just take the example from 7.2

HTH
--
 e-Trolley Sayegh & John, Nabil Sayegh
 Tel.: 0700 etrolley /// 0700 38765539
 Fax.: +49 69 8299381-8
 PGP : http://www.e-trolley.de


Re: Fw: Removing foreign key and adding sequence

От
"Chad Thompson"
Дата:
 drop trigger "RI_ConstraintTrigger_10337860" on lists;

worked perfectly! Thanks

How come I have to do the 7.2 method when I have 7.3?

select version();
                                                 version
----------------------------------------------------------------------------
-----------------------------
 PostgreSQL 7.3.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2
20020903 (Red Hat Linux 8.0 3.2-7)
(1 row)

Thanks
Chad

----- Original Message -----
From: "Nabil Sayegh" <postgresql@e-trolley.de>
To: "Chad Thompson" <chad@weblinkservices.com>
Cc: "pgsql-novice" <pgsql-novice@postgresql.org>
Sent: Thursday, June 26, 2003 3:27 PM
Subject: Re: Fw: [NOVICE] Removing foreign key and adding sequence


> Am Don, 2003-06-26 um 23.19 schrieb Chad Thompson:
> > > >  7.32.  Can I just drop the foreign key?  That would be SO much
easier
> > :-)
> > >
> > > Since 7.3 it's very easy, but even with 7.2 you could:
> > >
> > > 7.3:
> > > \d table_name
> > > if the key is labeled with e.g. $1:
> > > ALTER TABLE table_name DROP CONSTRAINT "$1";
> > > >
> >
> > Hrm... What could I be doing wrong?
>
> Your FK are 7.2 style (actually they are < 7.3)
> (they are triggers)
>
> > Triggers: RI_ConstraintTrigger_10337839,
> >           RI_ConstraintTrigger_10337842,
> >           RI_ConstraintTrigger_10337860
>
> Just take the example from 7.2
>
> HTH
> --
>  e-Trolley Sayegh & John, Nabil Sayegh
>  Tel.: 0700 etrolley /// 0700 38765539
>  Fax.: +49 69 8299381-8
>  PGP : http://www.e-trolley.de
>
>


Re: Fw: Removing foreign key and adding sequence

От
Nabil Sayegh
Дата:
Am Fre, 2003-06-27 um 17.30 schrieb Chad Thompson:
>  drop trigger "RI_ConstraintTrigger_10337860" on lists;
>
> worked perfectly! Thanks
>
> How come I have to do the 7.2 method when I have 7.3?

Your db has initially been created with < 7.3 and was migrated to 7.3.
Because it't not a trivial task to automatically convert the triggers to
'real' foreign keys, you still have them as triggers.

bye
--
 e-Trolley Sayegh & John, Nabil Sayegh
 Tel.: 0700 etrolley /// 0700 38765539
 Fax.: +49 69 8299381-8
 PGP : http://www.e-trolley.de