CONSTRAINTS: DISABLE - ENABLE
S i n t a s s i
ALTER TABLE nome_tabella DISABLE | ENABLE CONSTRAINT nome_constraint [CASCADE];
Supponiamo di avere la seguente tabella e di voler disabilitare la sua foreign key.
CREATE TABLE esempio2
(
IDESE2 number,
NOME varchar2(10 byte),
COGNOME varchar2(10 byte),
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES ESEMPIO1(IDESE1)
);
ALTER TABLE esempio2 DISABLE CONSTRAINT ese2_fk ;
Il codice SQL della tabella è ora il seguente:
CREATE TABLE ESEMPIO2
( IDESE2 NUMBER,
NOME VARCHAR2(10 BYTE),
COGNOME VARCHAR2(10 BYTE),
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES ESEMPIO1 (IDESE1) DISABLE
)
Per abilitarlo nuovamente eseguire il comando:
ALTER TABLE esempio2 ENABLE CONSTRAINT ese2_fk ;
Se una foreign key è definita senza specificare la colonna della tabella, Oracle in automatico la associa alla colonna chiave primaria della tabella.
CREATE TABLE esempio2
(
IDESE2 number,
NOME varchar2(10 byte),
COGNOME varchar2(10 byte),
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES esempio1
);
Il codice SQL della tabella mostra che la foreign key punta alla primary key della tabella esempio1.
.....
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES esempio1 (IDESE1) ENABLE
...........
Se disabilito la primary key della tabella esempio1 viene disabilitata la foreign key ese2_fk:
ALTER TABLE esempio1 DISABLE CONSTRAINT idese1_pk CASCADE;
Il codice SQL della tabella è ora il seguente:
.....
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES esempio1 (IDESE1) DISABLE
.....
Se riabilito la primary key la foreign key è sempre disabilitata.
ALTER TABLE esempio1 ENABLE CONSTRAINT idese1_pk CASCADE;
La foreign key deve essere abilitata manualmente:
ALTER TABLE esempio2 ENABLE CONSTRAINT ese2_pk;
ALTER TABLE nome_tabella DISABLE | ENABLE CONSTRAINT nome_constraint [CASCADE];
Supponiamo di avere la seguente tabella e di voler disabilitare la sua foreign key.
CREATE TABLE esempio2
(
IDESE2 number,
NOME varchar2(10 byte),
COGNOME varchar2(10 byte),
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES ESEMPIO1(IDESE1)
);
ALTER TABLE esempio2 DISABLE CONSTRAINT ese2_fk ;
Il codice SQL della tabella è ora il seguente:
CREATE TABLE ESEMPIO2
( IDESE2 NUMBER,
NOME VARCHAR2(10 BYTE),
COGNOME VARCHAR2(10 BYTE),
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES ESEMPIO1 (IDESE1) DISABLE
)
Per abilitarlo nuovamente eseguire il comando:
ALTER TABLE esempio2 ENABLE CONSTRAINT ese2_fk ;
Se una foreign key è definita senza specificare la colonna della tabella, Oracle in automatico la associa alla colonna chiave primaria della tabella.
CREATE TABLE esempio2
(
IDESE2 number,
NOME varchar2(10 byte),
COGNOME varchar2(10 byte),
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES esempio1
);
Il codice SQL della tabella mostra che la foreign key punta alla primary key della tabella esempio1.
.....
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES esempio1 (IDESE1) ENABLE
...........
Se disabilito la primary key della tabella esempio1 viene disabilitata la foreign key ese2_fk:
ALTER TABLE esempio1 DISABLE CONSTRAINT idese1_pk CASCADE;
Il codice SQL della tabella è ora il seguente:
.....
CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES esempio1 (IDESE1) DISABLE
.....
Se riabilito la primary key la foreign key è sempre disabilitata.
ALTER TABLE esempio1 ENABLE CONSTRAINT idese1_pk CASCADE;
La foreign key deve essere abilitata manualmente:
ALTER TABLE esempio2 ENABLE CONSTRAINT ese2_pk;