oracle中的默认约束,oracle中的约束

oracle 中约束有如下分类:

1、not deferrable(默认)

2、deferrable:

①initially immediate:每条语句执行结束时检查约束

②initially deferred:事务结束时才检查约束(或者设置了set constraint immediate时检查)

not deferrable和deferrable initially immediate 效果一样[@more@]

实际环境测试结果如下:

操作系统:AIX 5.3

oracle版本:9.2.0.8

SQL> create table a (

2 x int constraint check_x check ( x > 0 )

3   deferrable

4   initially immediate,

5 y int constraint check_y check ( y > 0 )

6   deferrable

7   initially deferred

8 );

Table created

SQL> insert into a values (1,1);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from a;

X Y

------------- ---------------

1 1

SQL> insert into a values (-1,1);

insert into a values (-1,1)

ORA-02290: check constraint (SAN.CHECK_X) violated

//立刻检查约束

SQL> select * from a;

X Y

---------- ----------

1 1

//回滚

SQL> insert into a values (1,-1);

1 row inserted

SQL> commit;

commit

ORA-02091: transaction rolled back

ORA-02290: check constraint (SAN.CHECK_Y) violated

//事务结束时检查

SQL> set constraints all deferred;

Constraints set

//手工设置为延迟检查约束

SQL> insert into a values (-1,1);

1 row inserted

SQL> commit;

commit

ORA-02091: transaction rolled back

ORA-02290: check constraint (SAN.CHECK_X) violated

SQL> set constraints all immediate;

//手工设置为立刻检查约束

Constraints set

SQL> insert into a values (1,-1);

insert into a values (1,-1)

ORA-02290: check constraint (SAN.CHECK_Y) violated

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值