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;



Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione