Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: How to bypass referential integrity

Re: How to bypass referential integrity

From: Daniel A. Morgan <dmorgan_at_exesolutions.com>
Date: Tue, 05 Jun 2001 23:30:28 -0700
Message-ID: <3B1DCE04.923B1D45@exesolutions.com>

Van Messner wrote:

> Here's the setup.
> Table A has an primary key AKEY
> Table B has a primary key BKEY
> Table INT is an intersection between A and B. INT has a column called AKEY
> which is foreign keyed back to the same column in A. INT has a column
> called BKEY which is foreign keyed back to the same column in B. In table
> INT the primary key is the columns AKEY and BKEY. There are regular b-tree
> indexes on AKEY and on BKEY in INT. A standard setup.
>
> If you put data into A, B and INT, then deleting data from A or B when child
> rows exist in INT causes an Oracle error.
>
> BUT now compress the index on AKEY in INT and compress the index on BKEY in
> INT. You can then delete rows in either A or B or both where child rows
> exist in INT, leaving orphan rows behind in INT and Oracle gives no error
> message.
>
> Van

Look into the documentation on DEFERRABLE FOREIGN KEY constraints. For example:

ALTER TABLE xyz

    ADD (CONSTRAINT xyz_abc_fk
    FOREIGN KEY (xyz)
    REFERENCES abc (abc_id) DEFERRABLE);

The foreign key is not enforced until a commit is issued.

That is the good news. The bad news is that incremental commits are often impossible making for potential rollback segment problems with large loads.

Daniel A. Morgan Received on Wed Jun 06 2001 - 01:30:28 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US