oracle学习札记55

1. 对于deferred的索引,要想使其真正延后(deferred)检查,或者立即(immediate)检查,需要执行如下语句。下图中上面那句命令可以修改指定索引,下面那句命令修改的是用户所属的所有索引。

oracle学习札记55

2. 由下图可知,创建主键时使用deferrable关键字,那么创建出来的索引是nonunique的。

oracle学习札记55

oracle学习札记55

由于索引是nonunique的,因此由disabled状态转换为enabled状态时,即使原来的数据中存在相同的记录,也是可以成功的。

oracle学习札记55

oracle学习札记55

3.下面是对上面第一条所描述情况的实验:

oracle学习札记55

oracle学习札记55

4.

oracle学习札记55

4.1

oracle学习札记55

5.

oracle学习札记55

6. 通常需要对子表中的外键建立索引。假设要更新父表中的key3,搜索子表时,如果key3存在,并且外键上不存在索引,那么oracle将使用share lock将整个子表都锁住。那么其他用户就不能对子表进行增删改了。

oracle学习札记55

如果子表外键上面存在索引,那么只需要使用行级锁即可。

oracle学习札记55

7.

oracle学习札记55

8.

oracle学习札记55

8.1 self-referencing foreign keys如下图所示,会存在一个插入顺序的问题。假设插入第一条后直接插入第四条,那么就会报错。

oracle学习札记55