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;