Thread: FOREIGN KEY migration of syntax, help needed

FOREIGN KEY migration of syntax, help needed

From
Mike Haberman
Date:
Hi,

   Quick question:

   My old database has the old-style FOREIGN KEY syntax:

CREATE CONSTRAINT TRIGGER "<unnamed>"
    AFTER INSERT OR UPDATE ON assettype
    FROM assettype
    NOT DEFERRABLE INITIALLY IMMEDIATE
    FOR EACH ROW
    EXECUTE PROCEDURE "RI_FKey_check_ins"('<unnamed>', 'assettype', 'assettype', 'UNSPECIFIED', 'pid', 'id');

CREATE CONSTRAINT TRIGGER "<unnamed>"
    AFTER DELETE ON assettype
    FROM assettype
    NOT DEFERRABLE INITIALLY IMMEDIATE
    FOR EACH ROW
    EXECUTE PROCEDURE "RI_FKey_cascade_del"('<unnamed>', 'assettype', 'assettype', 'UNSPECIFIED', 'pid', 'id');

CREATE CONSTRAINT TRIGGER "<unnamed>"
    AFTER UPDATE ON assettype
    FROM assettype
    NOT DEFERRABLE INITIALLY IMMEDIATE
    FOR EACH ROW
    EXECUTE PROCEDURE "RI_FKey_cascade_upd"('<unnamed>', 'assettype', 'assettype', 'UNSPECIFIED', 'pid', 'id');


   I was wondering if I need to worry about the RI_FKey_check_ins statement.

   Will the following take care of all three statements?

   ALTER TABLE ONLY assettype
   ADD CONSTRAINT at_fk_1 FOREIGN KEY (pid) REFERENCES assettype(id)
   ON UPDATE CASCADE ON DELETE CASCADE;


    Are there any other gottcha's when doing this type of migration?
(I need to use the FKEY syntax, so a schema visualizer will show the
foreign key relationships).


   thanks a ton,


   mike


Re: FOREIGN KEY migration of syntax, help needed

From
Tom Lane
Date:
Mike Haberman <mikeh@ncsa.uiuc.edu> writes:
>    Will the following take care of all three statements?

>    ALTER TABLE ONLY assettype
>    ADD CONSTRAINT at_fk_1 FOREIGN KEY (pid) REFERENCES assettype(id)
>    ON UPDATE CASCADE ON DELETE CASCADE;

Yes, there are three or so triggers under the hood of any FOREIGN KEY
constraint.

            regards, tom lane

Re: FOREIGN KEY migration of syntax, help needed

From
Mike Haberman
Date:
Thank you for the quick response.

   If all my old constraints are NOT DEFERRABLE INITIALLY IMMEDIATE
    does that mean I don't have to worry about the deferrable keyword?

   mike


On Tue, Jul 31, 2007 at 04:00:59PM -0400, Tom Lane wrote:
> Mike Haberman <mikeh@ncsa.uiuc.edu> writes:
> >    Will the following take care of all three statements?
>
> >    ALTER TABLE ONLY assettype
> >    ADD CONSTRAINT at_fk_1 FOREIGN KEY (pid) REFERENCES assettype(id)
> >    ON UPDATE CASCADE ON DELETE CASCADE;
>
> Yes, there are three or so triggers under the hood of any FOREIGN KEY
> constraint.
>
>             regards, tom lane

--
-----------------------------------------------------------------------
Mike Haberman
Senior Software/Network Research Engineer
National Center for Supercomputing Applications
217.244.9370
-----------------------------------------------------------------------

Re: {Spam} FOREIGN KEY migration of syntax, help needed

From
Dimitri Fontaine
Date:
Le mardi 31 juillet 2007, Mike Haberman a écrit :
>    My old database has the old-style FOREIGN KEY syntax:

I've had this very same transition to make on a database here, and
successfully used adddepend:
  http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/adddepends/adddepends/

It has been moved out from contrib to pgfoundry as of 8.2, but on a 8.1 server
where the constraint triggers seem to have been inherited from 7.x times, was
darn usefull.

Hope this helps,
--
dim

Attachment

Re: {Spam} FOREIGN KEY migration of syntax, help needed

From
Mike Haberman
Date:
wow.. Thank you.

mike


On Wed, Aug 01, 2007 at 10:31:16AM +0200, Dimitri Fontaine wrote:
> Le mardi 31 juillet 2007, Mike Haberman a ?crit?:
> >    My old database has the old-style FOREIGN KEY syntax:
>
> I've had this very same transition to make on a database here, and
> successfully used adddepend:
>   http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/adddepends/adddepends/
>
> It has been moved out from contrib to pgfoundry as of 8.2, but on a 8.1 server
> where the constraint triggers seem to have been inherited from 7.x times, was
> darn usefull.
>
> Hope this helps,
> --
> dim



--
-----------------------------------------------------------------------
Mike Haberman
Senior Software/Network Research Engineer
National Center for Supercomputing Applications
217.244.9370
-----------------------------------------------------------------------