CONSTRAINTS: DEFERRED - DEFERRABLE

L'opzione DEFERRED permette ad una constraint di non essere applicata ai dati finché non termina la transazione.

S i n t a s s i
ALTER TABLE nome_tabella ADD CONSTRAINT nome_constr tipo_constraint DEFERRABLE;

Le constraint di default sono NOT DEFERRABLE.
Durante la sessione in corso è possibile impostare la constraint come DEFERRED.

SET CONSTRAINT nome_constr DEFERRED;

oppure si può agire su tutte le constraint:

SET CONSTRAINT ALL DEFERRED;

Per tutte le operazioni seguenti che operano sui dati, come Insert, Update...., non sarà applicata la constraint ma dopo la Commit la constraint diventerà valida, cioè IMMEDIATE, e quindi se sono stati inseriti dati che violano la constraint il comando Commit falisce e viene eseguito il rollback dei dati.

Per impostare il comportamento di default delle constraint eseguire il comando:
SET CONSTRAINT nome_constr IMMEDIATE;

oppure se si può agire su tutte le constraint:

SET CONSTRAINT ALL IMMEDIATE;

Post popolari in questo blog

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

Create e Drop Pluggable Database