9iR2数据库概念第21章 读书笔记

本文详细介绍了数据库中的数据完整性约束概念,包括notnull、unique、primary key等约束的区别及应用,并探讨了复合唯一约束、主键约束、外键约束以及check约束的特性与实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实也无所谓笔记了,只是摘抄了些自己以前不是太清楚的概念而已[@more@]

其实也无所谓笔记了,只是摘抄了些自己以前不是太清楚的概念而已,不想再往笔记本上抄写了,所以写在这里,当作笔记吧!哈哈!

第21章:数据完整性

not null是针对单列的
unique,primary key是针对列的集合的

unique时null与null被认为是不同的,是被允许的,但在部分为null的复合唯一完整性约束时,考虑是否唯一时是不考虑都为null值的列的,也就是说
假如unique(a,b)
a b
null 1
null 1
就被认为是违反唯一完整性约束的,而不是说a的两行null和null是不相同的,所以(null,1)和(null,1)也就不相同,所以不违反唯一约束了,不是这样的!(21-11)

唯一完整性约束会自动的通过唯一索引来实现

21-11:主键约束不仅是unique的,而且要求所有列都是not null的
oracle通过unique index和not null约束来加强主键约束

21-13:外键引用的是主键/唯一键,也可以是部分或者全部null,要求数量和数据类型完全相同

21-15:如果复合外键的任何一列是null的话,那么这个复合外键的其它非null部分可以不匹配父键的任何相应部分

21-17:有关外键索引的并发控制
如果外键上没有索引,
那么在8I中,当对父表的主键执行update/delete时,子表是TM-4,子表指定on delete cascade时,子表是TM-5,直到对父表的事务提交时为止;对父表insert时,子表上不加任何的表级锁
在9I中,是同上的,但是语句执行前获得,语句执行完成后,立即释放,而不是持续为整个事务期间


如果外键上有索引,对父表的任何操作都不会对子表加任何的TM锁

21-21:check约束要求检查条件是true/unknown的,不能是false的

21-22:完整性约束的检查时机是语句执行完成之后,如果违反,语句被回滚(这是默认情况,立即,不推迟)
推迟的完整性约束检查,是在事务提交时,如果违反,事务被回滚.
如果约束导致一动作(比如说级联删除),那么这个动作始终是作为语句的一部分执行的,而不管约束的检查时机.


21-26:
enable:对新插入/更新的数据进行完整性检查
disable:对新插入/更新的数据不进行完整性检查
validate:确保存在的数据符合完整性约束
novalidate:存在的数据可以有些不符合完整性约束

它们的组合状态可以有一些

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10597822/viewspace-967212/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10597822/viewspace-967212/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值