oracle学习札记55
1. 对于deferred的索引,要想使其真正延后(deferred)检查,或者立即(immediate)检查,需要执行如下语句。下图中上面那句命令可以修改指定索引,下面那句命令修改的是用户所属的所有索引。
2. 由下图可知,创建主键时使用deferrable关键字,那么创建出来的索引是nonunique的。
由于索引是nonunique的,因此由disabled状态转换为enabled状态时,即使原来的数据中存在相同的记录,也是可以成功的。
3.下面是对上面第一条所描述情况的实验:
4.
4.1
5.
6. 通常需要对子表中的外键建立索引。假设要更新父表中的key3,搜索子表时,如果key3存在,并且外键上不存在索引,那么oracle将使用share lock将整个子表都锁住。那么其他用户就不能对子表进行增删改了。
如果子表外键上面存在索引,那么只需要使用行级锁即可。
7.
8.
8.1 self-referencing foreign keys如下图所示,会存在一个插入顺序的问题。假设插入第一条后直接插入第四条,那么就会报错。