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;
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;