Oracle外键约束.docx

上传人:牧羊曲112 文档编号:3162572 上传时间:2023-03-11 格式:DOCX 页数:5 大小:37.96KB
返回 下载 相关 举报
Oracle外键约束.docx_第1页
第1页 / 共5页
Oracle外键约束.docx_第2页
第2页 / 共5页
Oracle外键约束.docx_第3页
第3页 / 共5页
Oracle外键约束.docx_第4页
第4页 / 共5页
Oracle外键约束.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Oracle外键约束.docx》由会员分享,可在线阅读,更多相关《Oracle外键约束.docx(5页珍藏版)》请在三一办公上搜索。

1、Oracle 外键约束Oracle 外键约束 外键FOREIGN KEY约束是几种约束是最复杂的,外键约束可以使两个表进行关联。外键是指引用另一个表中的某个列或某几个列,或者本表中另一个列或另几个列的列。被引用的列应该具有主键约束,或者惟一性约束。 在外键的定义中,涉及到外键表、外键列、被引用表和被引用列等几个概念。如果成功地创建了外键约束,那么系统将要求外键列中的数据必须来自被引用列中的数据。被引用列中不存在的数据不能存储于外键列中。在一般情况下,当删除被引用表中的数据时,该数据也不能出现在外键列中。如果外键列存储了将要在被引用表中删除的数据,那么对被引用表删除数据的操作将失败。 最典型的外

2、键约束是HR模式中的EMPLOYEES和DEPARTMENT表,在该外键约束中,外键表EMPLOYEES中的外键列DEMPARTMENT_ID将引用被引用表DEPARTMENTS中的DEMPARTMENT_ID列。 例如,在以下的示例中,将以HR身份连接到数据库,并创建一个新表ADMINISTRATION_EMP,并为其添加到DEPATRMENT表的外键约束: SQL connect hr/hr 已连接。 SQL create table administration_emp 2 as select * from hr.employees 3 where department_id=10; 表

3、已创建。 SQL alter table administration_emp 2 add constraint admin_dep_fk 3 foreign key(department_id) 4 references departments(department_id); 表已更改。 为验证创建的外键约束的有效性,可以向ADMINISTRATION_EMP表添加一条记录,并且它的DEPARTMENT_ID列值不存在DEPARTMENTS表中,那么插入操作将会因为违反外键约束而失败: SQL insert into administration_emp( 2 employee_id,las

4、t_name,email,hire_date,job_id,department_id) 3 values(120,刘丽,li,sysdate,HR_REP,360); insert into administration_emp( * 第 1 行出现错误: ORA-02291: 违反完整约束条件 (HR.ADMIN_DEP_FK) - 未找到父项关键字 注 意 在一个表上创建外键约束时,被引用表必须已经存在,并且必须为该表的引用列定义惟一性约束或主键约束。 如果外键表的外键列与被引用表中的被引用列名相同,如上面的示例所示,则为外键表定义外键列时可以简化为如下的形式: SQL alter ta

5、ble administration_emp 2 add constraint admin_dep_fk 3 foreign key(department_id) 4 references departments; 在定义外键FOREIGN KEY约束时,还可以通过关键字ON指定引用行为的类型。当尝试删除被引表中的一条记录时,通过引用行为可以确定如何处理外键表中的外键列。引用类型包括3种: l 在定义外键约束时,如果使用了CASADE关键字,那么当被引用表中被引用列的数据被删除时,外键表中对应的数据也将被删除。 l 在定义外键约束时,如果使用了关键字SET NULL,那么当被引用表中被引用列的

6、数据被删除时,外键表中外键列将被设置为NULL。要使这个关键字起作用,在外键列必须支持NULL值。 l 在定义外键约束时,如果使用了关键字NO ACTION,那么当删除被引用表中被引用列的数据时将违反外键约束,该操作将被禁止执行,这也是外键的默认引用类型。 例如,下面的实例将演示外键的级联删除。 以HR身份连接到数据库,创建一个新的引用表,并为其添加主键约束。 SQL connect hr/hr 已连接。 SQL create table admin_dept 2 as select * from hr.departments 3 where department_id=10; 表已创建。 S

7、QL alter table admin_dept 2 add primary key(department_id); 表已更改。 使用ON DELETE CASADE关键字修改ADMINISTRATION_EMP表的外键约束。 SQL alter table administration_emp 2 add constraint admin_dept_fk 3 foreign key(department_id) 4 references admin_dept on delete cascade; 表已更改。 查看ADMINISTRATION_EMP表中的数据。 SQL select emp

8、loyee_id,last_name,job_id,salary,department_id 2 from administration_emp; EMPLOYEE_ID LAST_NAME JOB_ID SALARY DEPARTMENT_ID - - - - - 200 Whalen AD_ASST 4400 10 在指定外键行为类型为ON DELETE CASADE后,在删除被引用表ADMIN_DEPT中编号为10的行时,系统将会级联删除ADMINISTRATION_EMP表中所有的记录。 SQL delete admin_dept 2 where department_id=10; 已删除 1 行。 SQL select employee_id,last_name,job_id,salary,department_id 2 from administration_emp; 未选定行 与其他约束相同,如果想要删除外键约束,可以使用如下的ALTER TABLE语句形式: alter table administration_emp drop constraint admin_dept_fk;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号