约束在事务中的校验时机
约束的校验时机可以是立即,或者延迟到事务提交的时候。可以在会话层面或事务层面进行设置:
ALTER SESSION
SET CONSTRAINT[S] =
{IMMEDIATE|DEFERRED|DEFAULT}
SET CONSTRAINT[S]
{constraint [, constraint ]...
|ALL }
{IMMEDIATE|DEFERRED}
DROP TABLE table CASCADE CONSTRAINTS
DROP TABLESPACE tablespace INCLUDING CONTENTS
CASCADE CONSTRAINTS
约束的状态
约束有几种状态:使能/禁止、校验/不校验。通过这几种状态的组合,可以实现数据的快速更新。校验约束的时候,可以使用EXCEPTIONS子句来处理不满足约束的异常数据。
相关SQL语句如下:
ALTER TABLE ADD CONSTRAINT ...
EXCEPTIONS INTO
ALTER TABLE ... DISABLE CONSTRAINT
ALTER TABLE ... ENABLE NOVALIDATE
CONSTRAINT
ALTER TABLE ... ENABLE VALIDATE
CONSTRAINT ... EXCEPTIONS INTO