博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
约束的DEFERRABLE, NOT DEFERRABLE, INITIALLY IMMEDIATE 和 INITIALLY DEFERRED
阅读量:6695 次
发布时间:2019-06-25

本文共 1508 字,大约阅读时间需要 5 分钟。

[ CONSTRAINT constraint_name ]

{ NOT NULL |
  NULL |
  CHECK ( expression ) [ NO INHERIT ] |
  DEFAULT default_expr |
  UNIQUE index_parameters |
  PRIMARY KEY index_parameters |
  REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
    [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

 

DEFERRABLE(可以推迟的约束检查):可以推迟到事务结尾。目前仅UNIQUE, PRIMARY KEY, EXCLUDE和FOREIGN KEY才支持DEFERRABLE。NOT NULL和CHECK约束不支持。

NOT DEFERRABLE(不可推迟的约束检查):在每一个命令后会立即验证是否满足约束条件。缺省是NOT DEFERRABLE。

如果约束是INITIALLY IMMEDIATE,那么每条语句之后就检查它。这个是缺省。

如果约束是INITIALLY DEFERRED,那么直到事务完成才检查。 

 

检查的时间可以用以下命令修改:

SET CONSTRAINTS [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

 

例子:

  • 默认是NOT DEFERRABLE INITIALLY IMMEDIATE

create table t1 (id number, name char(10));

alter table t1 modify id number primary key;

SQL> insert into t1 values(1,'Tough1');

已创建 1 行。

SQL> insert into t1 values(1,'Tough1');

insert into t1 values(1,'Tough1')
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (SCOTT.SYS_C005428)

 

  • DEFERRABLE或INITIALLY DEFERRED的情况:

create table t2 (id number, name char(10));

alter table t2 modify id number primary key INITIALLY DEFERRED;

alter table t2 modify id number primary key DEFERRABLE INITIALLY DEFERRED;

SQL> insert into t2 values(1,'Tough1');

已创建 1 行。

SQL> insert into t2 values(1,'Tough1');

已创建 1 行。

SQL> commit;

commit
*
第 1 行出现错误:
ORA-02091: 事务处理已回退
ORA-00001: 违反唯一约束条件 (SCOTT.SYS_C005435)

 


 

 

转载于:https://www.cnblogs.com/toughhou/p/3778798.html

你可能感兴趣的文章
可能是把Java内存区域讲的最清楚的一篇文章
查看>>
PHP中的几个随机数生成函数
查看>>
Anaconda不同envs的pip和python的版本
查看>>
SQLServer之创建全文索引
查看>>
如何以并发方式在同一个流上执行多种操作?--复制流
查看>>
Spring Boot 参考指南(开发Web应用程序)
查看>>
javascript块级作用域处理闭包和释放内存的垃圾回收
查看>>
快速入门React
查看>>
正则表达式语法入门
查看>>
关于顶级、一级、二级域名如何理解?
查看>>
Laravel 5.6 正式发布(文档翻译工作将在春节后启动)
查看>>
兼容浏览器原生DOM的各种特性总结
查看>>
推荐引擎
查看>>
前端真的能做到彻底权限控制吗?
查看>>
携程对AIOps场景和算法的探索与实践
查看>>
AngularJS中$q的promise使用及链式调用传值问题
查看>>
Aop说明
查看>>
国外 服务器,阿里云海外服务器-海外节点云服务器全线2折起挺好
查看>>
5G火车站来了!上海虹桥火车站5G网络建设正式启动
查看>>
Flutter终将逆袭!1.2版本发布,或将统一江湖
查看>>