Hvordan man laver en Constraint fremførbare i Oracle

August 17

Hvordan man laver en Constraint fremførbare i Oracle


Begrænsninger er designet til at forebygge ulykker i datahåndtering og bevare integriteten af data. I nogle tilfælde kan det imidlertid være nødvendigt at udskyde begrænsninger, så de faktisk ikke håndhæve deres regler, indtil en bestemt betingelse er opfyldt. For eksempel er det muligt at udskyde reglerne i en begrænsning kun aktivere, når en "commit" er blevet anmodet om.

Instruktioner

1 Opret to tabeller i sqlplus at demonstrere fremførbare begrænsninger som følger: CREATE TABLE test (test_id INTEGER PRIMARY KEY, foreign_id INTEGER NOT NULL); CREATE TABLE test 2 (test2_id INTEGER PRIMARY KEY, foreign2_id INTEGER NOT NULL);

2 Ret tabellerne i sqlplus at tilføje fremmede nøgler til hinanden som følger: ALTER TABLE test ADD CONSTRAINT test2REF FOREIGN KEY (foreign_ID) REFERENCER test 2 (test2_ID) Oprindeligt UDSKUDT fremførbare; ALTER TABLE test 2 ADD CONSTRAINT testREF FOREIGN KEY (foreign2_ID) REFERENCER test (test_ID) Oprindeligt UDSKUDT fremførbare;

3 Indsæt poster i begge tabeller i sqlplus. Dette viser, at med en fremførbare begrænsning, kan rækker tilføjes trods de fremmede nøgler: INSERT INTO test værdier (1, 2); INSERT INTO test 2 VALUES (2, 1);

4 Forpligte oplysningerne på sqlplus kommando med: Commit; Dette vil fuldføre handlingen og rækker vil blive tilføjet i begge tabeller.

5 Demonstrere hvordan det ville fejle ved at køre alle de kommandoer igen i en enkelt operation, men uden den udskudte begrænsning. På sqlplus kommando ind: - Første droppe tabellerne. Drop table test CASCADE begrænsninger; Drop table test 2 CASCADE begrænsninger; - Indtast nu alle de tidligere kommandoer, men uden de fremførbare begrænsninger som følger: CREATE TABLE test (test_id INTEGER PRIMARY KEY, foreign_id INTEGER NOT NULL); CREATE TABLE test 2 (test2_id INTEGER PRIMARY KEY, foreign2_id INTEGER NOT NULL); ALTER TABLE test ADD CONSTRAINT test2REF FOREIGN KEY (foreign_id) REFERENCER test 2 (test2_id); ALTER TABLE test 2 ADD CONSTRAINT testREF FOREIGN KEY (foreign2_id) REFERENCER test (test_id); INSERT INTO testværdier (1, 2); INSERT INTO test 2 VALUES (2, 1); Denne version af scriptet vil mislykkes som de begrænsninger ikke er blevet udskudt afventer en kommando "COMMIT".


relaterede artikler