Beperkingen zijn ontworpen om ongevallen in data handling te voorkomen en de integriteit van de gegevens te bewaren . In sommige gevallen echter kan het nodig zijn om beperkingen te stellen teneinde ze eigenlijk niet hun regels te handhaven totdat een bepaalde voorwaarde is voldaan . Zo is het mogelijk om de regels van een beperking stellen om te activeren wanneer een "beschikbaarheids " is aangevraagd . Instructies 1 Maak twee tabellen in SQLPlus om deferrable beperkingen te tonen als volgt : CREATE TABLE test ( test_id INTEGER PRIMARY KEY , foreign_id INTEGER NOT NULL ) ; CREATE TABLE test2 ( test2_id INTEGER PRIMARY KEY , foreign2_id INTEGER NOT NULL ) ; < br > 2 Alter de tabellen in SQLPlus om foreign key constraints als volgt toevoegen aan elkaar : ALTER TABLE -test aDD CONSTRAINT test2REF FOREIGN KEY ( foreign_ID ) Referenties test2 ( test2_ID ) < br > EERST UITGESTELD deferrable ; ALTER TABLE test2 ADD CONSTRAINT testREF FOREIGN KEY ( foreign2_ID ) Referenties test ( test_ID ) op EERST UITGESTELD deferrable ; 3 Steek platen in beide tabellen in SQLPlus . Dit toont aan dat met een deferrable beperking , rijen kunnen worden toegevoegd , ondanks de foreign key constraints : INSERT INTO testwaarden ( 1 , 2 ) ; INSERT INTO test2 VALUES ( 2 , 1 ) ; 4 Commit de informatie op de SQLPlus commando : Commit ; Dit zal de bewerking te voltooien en de rijen worden toegevoegd aan beide tabellen < br . > 5 Demonstreer hoe het zou mislukken door het uitvoeren van alle opdrachten weer in een bewerking , maar zonder de uitgestelde beperking . Op de SQLPlus opdracht invoert : - Eerste druppel de tafels Drop tafel testen CASCADE beperkingen ; Drop tafel test2 CASCADE beperkingen; - . - voer nu al het voorgaande commando's, maar zonder de deferrable beperkingen als volgt : CREATE TABLE test ( test_id INTEGER PRIMARY KEY , foreign_id INTEGER NOT NULL ) ; CREATE TABLE test2 ( test2_id INTEGER PRIMARY KEY , foreign2_id INTEGER NOT NULL ) ; ALTER TAFEL -test ADD CONSTRAINT test2REF FOREIGN KEY ( foreign_id ) Referenties test2 ( test2_id ) ; ALTER TABLE test2 ADD CONSTRAINT testREF FOREIGN KEY ( foreign2_id ) Referenties test ( test_id ) ; INSERT INTO testwaarden ( 1 , 2 ) ; INSERT INTO test2 VALUES ( 2 , 1 ) ; Deze versie van het script zal mislukken als de beperkingen hebben niet is uitgesteld in afwachting van een ' COMMIT "commando .
|