源码-Oracle数据库管理-第六章-索引和约束-约束部分-Part 2

    xiaoxiao2023-03-24  3

    Oracle建议以下条件满足时,无需再外键上创建索引:

    1. 没有删除父表的行

    2. 没有更新父表的主键,这个主键被子表的外键所引用

    3. 不会进行父子链接的查询,比如,books联接到bookcategory表进行联接查询

    --未在参照完整性约束中指定操作类型,Oracle不予许直接删除引用表中的键值 drop table books; CREATE TABLE books( book_id INT CONSTRAINT pk_book_id PRIMARY KEY, --指定图书表的主键 book_name VARCHAR2(50), --指定图书名称 cate_id INT, --使用表级别的语法创建books表 CONSTRAINT fk_cate_id FOREIGN KEY (cate_id) REFERENCES bookCategory (cate_id) ); insert into books values(170,'学好Oracle,走遍天下都不怕!',1); select * from books; update books set cate_id=2 where cate_id=1; select * from bookcategory; delete from bookcategory where cate_id=2; rollback; --在参照完整性约束中指定级联删除,将在删除引用表中的键值的同时自动删除子表中的记录 drop table books; CREATE TABLE books( book_id INT CONSTRAINT pk_book_id PRIMARY KEY, --指定图书表的主键 book_name VARCHAR2(50), --指定图书名称 cate_id INT, --使用表级别的语法创建books表 CONSTRAINT fk_cate_id FOREIGN KEY (cate_id) REFERENCES bookCategory (cate_id) --定义外键约束并指定级联删除 on delete cascade ); insert into books values(170,'学好Oracle,走遍天下都不怕!',1); select * from books; delete from bookcategory where cate_id=1; rollback; --在参照完整性约束中对删除置空,将在删除引用表中的键值的同时将子表中的引用列值设置为null drop table books; CREATE TABLE books( book_id INT CONSTRAINT pk_book_id PRIMARY KEY, --指定图书表的主键 book_name VARCHAR2(50), --指定图书名称 cate_id INT, --使用表级别的语法创建books表 CONSTRAINT fk_cate_id FOREIGN KEY (cate_id) REFERENCES bookCategory (cate_id) --定义外键约束并指定删除置空 on delete set null ); insert into books values(170,'学好Oracle,走遍天下都不怕!',1); select * from books; delete from bookcategory where cate_id=1; select * from bookcategory; insert into bookcategory values(1, '计算机科学','终身学习!'); rollback; --外键与索引 --插入图书信息 truncate table books; select * from books; insert into books select rownum+2, object_name, decode(mod(rownum,2),0,1,2) from all_objects; commit; delete from bookcategory where cate_id=1; create index idx_cate_id on books(cate_id);

    转载请注明原文地址: https://ju.6miu.com/read-1201974.html
    最新回复(0)