Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> software >> Software Database >> .

Come fare un vincolo Deferrable in Oracle

Vincoli sono progettati per prevenire incidenti nel trattamento delle informazioni e per preservare l'integrità dei dati . In alcuni casi, tuttavia , può essere necessario rinviare vincoli quindi in realtà non rispettare le loro regole finché una determinata condizione . Ad esempio , è possibile rinviare le regole di un vincolo di attivare solo se è stato richiesto un "commit" . Istruzioni
1

Creare due tabelle in sqlplus per dimostrare vincoli differibili come segue :

CREATE TABLE test (

test_id INTEGER PRIMARY KEY , Stati

foreign_id INTEGER NOT NULL) ;

CREATE TABLE test2 (

test2_id INTEGER PRIMARY KEY , Stati

foreign2_id INTEGER NOT NULL

) ;

2

Modificare i tavoli in sqlplus per aggiungere vincoli di chiave esterna tra loro come segue :

ALTER TABLE test aggiungi vincolo test2REF

FOREIGN KEY ( foreign_ID ) RIFERIMENTI test2 ( test2_ID )

INIZIALMENTE DIFFERITA DEFERRABLE ;

ALTER TABLE ADD CONSTRAINT test2 testREF

FOREIGN KEY ( foreign2_ID ) RIFERIMENTI prova ( test_ID ) per

INIZIALMENTE DIFFERITA DEFERRABLE ;

3

inserire record in entrambe le tabelle in SQLPlus . Questo dimostra che con un vincolo differibile , le righe possono essere aggiunte , nonostante i vincoli di chiave esterna :

INSERT INTO test VALUES ( 1 , 2) ;

INSERT INTO test2 VALUES ( 2 , 1 ) ;
4

commettere l' informazione al comando sqlplus con :

Commit ;

Questo completerà l'operazione e le righe sarà aggiunto per entrambe le tabelle < br . >
5

Dimostrare come fallirebbe eseguendo tutti i comandi di nuovo in una singola operazione , ma senza il vincolo differito . Al comando sqlplus entrare :

- prima eliminare le tabelle

DROP TABLE vincoli CASCADE prova;

tavolo Goccia test2 vincoli CASCADE ;

- . - inserire ora tutti i comandi precedenti, ma senza i vincoli differibili come segue :

CREATE TABLE test (

test_id INTEGER PRIMARY KEY , Stati

foreign_id INTEGER NOT NULL

) ;

CREATE TABLE test2 (

test2_id INTEGER PRIMARY KEY , Stati

foreign2_id INTEGER NOT NULL

) ;

ALTER TABLE test Aggiungi vincolo test2REF

FOREIGN KEY ( foreign_id ) RIFERIMENTI test2 ( test2_id ) ;

ALTER TABLE ADD CONSTRAINT test2 testREF

FOREIGN KEY ( foreign2_id ) prova RIFERIMENTI ( test_id ) ;

INSERT INTO test VALUES ( 1 , 2) ;

INSERT INTO test2 VALUES ( 2 , 1 ) ;

Questa versione dello script fallirà come i vincoli hanno non è stata rinviata in attesa di un comando "commit" .

 

software © www.354353.com