Begrænsninger er designet til at forhindre ulykker i datahåndtering og bevare integriteten af data. I nogle tilfælde kan det imidlertid være nødvendigt at udsætte begrænsninger , så de faktisk ikke håndhæver deres regler indtil en bestemt betingelse er opfyldt. For eksempel er det muligt at udskyde reglerne for en hindring for at aktivere kun, når en " commit " er blevet anmodet om. Instruktioner
1
Opret to tabeller i sqlplus at demonstrere fremførbare begrænsninger som følger : Hej
CREATE TABLE test (
test_id INTEGER PRIMARY KEY , salg
foreign_id INTEGER NOT NULL) ;
CREATE TABLE test2 (
test2_id INTEGER PRIMARY KEY , salg
foreign2_id INTEGER NOT NULL
)
< br > 2.
Alter i tabellerne i sqlplus at tilføje fremmede nøgler til hinanden som følger : Hej
ALTER TABLE test aDD CONSTRAINT test2REF
FOREIGN KEY ( foreign_ID ) REFERENCER test2 ( test2_ID ) < br >
OPRINDELIG UDSKUDT fremførbare ,
ALTER TABLE test2 ADD CONSTRAINT testREF
FOREIGN KEY ( foreign2_ID ) REFERENCER test ( test_ID )
OPRINDELIG UDSKUDT fremførbare ;
3
Indsæt poster i begge tabeller i sqlplus . Dette viser , at med en fremførbare begrænsning , kan rækker føjes til trods for de fremmede nøgler :
INSERT INTO test VALUES (1, 2 ),
INSERT INTO test2 VALUES ( 2, 1 ) ;
4
Commit oplysningerne på sqlplus kommando med : Hej
Commit ,
Dette vil fuldende drift og rækkerne vil blive tilføjet i for begge tabeller < br . >
5
Demonstrere , hvordan det ville mislykkes ved at køre alle de kommandoer igen i en enkelt operation , men uden den udskudte begrænsning. På sqlplus kommando ind : Hej
- Første drop tabellerne
Drop table test CASCADE begrænsninger;
Drop table test2 CASCADE begrænsninger;
- . - Indtast nu alle de tidligere kommandoer , men uden de fremførbare begrænsninger som følger : Hej
CREATE TABLE test (
test_id INTEGER PRIMARY KEY , salg
foreign_id INTEGER NOT NULL
< p> )
CREATE TABLE test2 (
test2_id INTEGER PRIMARY KEY , salg
foreign2_id INTEGER NOT NULL
)
ALTER TABEL test ADD CONSTRAINT test2REF
FOREIGN KEY ( foreign_id ) REFERENCER test2 ( test2_id )
ALTER TABLE test2 ADD CONSTRAINT testREF
FOREIGN KEY ( foreign2_id ) REFERENCER test ( test_id ) ;
INSERT INTO test VALUES (1, 2 ),
INSERT INTO test2 VALUES ( 2, 1 ),
denne version af scriptet vil mislykkes, da de begrænsninger har ikke blevet udskudt afventer en " COMMIT " kommando .