关于主键约束enable和disable的问题
来源:互联网 发布:普鲁士号实际数据 编辑:程序博客网 时间:2024/06/03 05:13
当我们在创建主键约束的时候,会自动创建一个唯一索引(唯一约束也是如此)
其实对于主键约束而言,它是非空约束+唯一约束的组合。而自动创建的唯一索引,就是用来实现唯一性这一规则的。
当我们disable掉主键约束后,它会自动删掉当初自动创建的唯一索引。
同理,当我们enable主键后,它又会自动创建唯一索引。
另外,当我们disable约束后,像主键中插入null值后是被允许的,但当我们再次enable主键约束,便会报错:
SQL> insert into test values(null);
1 row created.
SQL> commit;
Commit complete.
SQL> alter table test enable constraint pk_id;
alter table test enable constraint pk_id
*
ERROR at line 1:
ORA-02437: cannot validate (SYS.PK_ID) - primary key violated
所以,对于约束enable过程,又涉及到一个对原有数据是否做约束检查问题。
对于上述情况,可以novalidate,即允许原有数据中存在不符合主键约束的值:
SQL> alter table test enable novalidate constraint pk_id;
Table altered.
但是,约束启用后,就不允许有违反约束的值了
SQL> insert into test values(null);
insert into test values(null)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYS"."TEST"."ID")
------------------------------------------------------------------------------------------
记录一些细节,有时候真是记不清。
- 关于主键约束enable和disable的问题
- oracle约束的ENABLE 和disable以及冲突信息exceptions
- 约束constraint的 enable/disable novalidate总结
- Oracle约束的关键字Enable/Disable…
- 约束disable/enable validate/novalidate 的区别
- Oracle 约束enable/disable novalidate
- 如何扩展主键的长度(DISABLE And ENABLE CHANGE_TRACKING)
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- restore factory属性的enable和disable
- Oracle之表示约束状态的关键字Enable/Disable/Validate/Novalidate
- 唯一约束和主键约束的区别
- 主键约束和唯一约束的区别
- 如何设置alertdialog,button enable 和 disable?
- mysql中的/*! ... */ 注释和disable/enable keys
- oracle删除主键约束的问题m
- 搭建elasticSearch源码调试环境
- 【hadoop Sqoop】Sqoop从mysql导数据到hive
- Indirect display driver开发
- tomcat实现访问资源的原理
- MapReduce实现两表的Join--原理及python和java代码实现
- 关于主键约束enable和disable的问题
- 从王者荣耀聊聊游戏的帧同步
- angular 之 控制器 controller详解
- css3 的transition-property webkitTransform (页面不显示的个人总结) 第十节
- MIR7采购Invoice预制增强-INVOICE_UPDATE
- 以太坊客户端geth命令行选项汇总
- python实现Dijkstra算法求解图中最短路径距离
- Jmeter性能测试常见指标
- java实现rpc协议