- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0 |
外键约束保证参照完整性。外键约束限定了一个列的取值范围。一个例子就是限定州名缩写在一个有限值集合中,这个值集合是另外一个控制结构——一张父表
下面我们创建一张参照表,它提供了完整的州缩写列表,然后使用参照完整性确保学生们有正确的州缩写。第一张表是州参照表,State作为主键
CREATE TABLE state_lookup
(state VARCHAR2(2),
state_desc VARCHAR2(30)) TABLESPACE student_data; ALTER TABLE state_lookup
ADD CONSTRAINT pk_state_lookup PRIMARY KEY (state)
USING INDEX TABLESPACE student_index;
然后插入几行记录:
INSERT INTO state_lookup VALUES ('CA', 'California');
INSERT INTO state_lookup VALUES ('NY', 'New York');
INSERT INTO state_lookup VALUES ('NC', 'North Carolina');
我们通过实现父子关系来保证参照完整性,图示如下
--------------- 外键字段存在于Students表中
|State_lookup | 是State字段
--------------- 一个外键必须参照主键或Unique字段
| 这个例子中,我们参照的是State字段
| 它是一个主键字段(参看DDL)
/|\
---------------
| Students |
---------------
上图显示了State_Lookup表和Students表间一对多的关系,State_Lookup表定义了州缩写通用集合——在表中每一个州出现一次。因此,State_Lookup表的主键是State字段。
State_Lookup表中的一个州名可以在Students表中出现多次。有许多学生来自同一个州,一次,在表State_Lookup和Students之间参照完整性实现了一对多的关系。
外键同时保证Students表中State字段的完整性。每一个学生总是有个State_lookup表中成员的州缩写。
外键约束创建在子表。下面在students表上创建一个外键约束。State字段参照state_lookup表的主键。
1、创建表
CREATE TABLE students
(student_id VARCHAR2(10) NOT NULL,
student_name VARCHAR2(30) NOT NULL,
college_major VARCHAR2(15) NOT NULL,
status VARCHAR2(20) NOT NULL,
state VARCHAR2(2),
license_no VARCHAR2(30)) TABLESPACE student_data;
2、创建主键
ALTER TABLE students
ADD CONSTRAINT pk_students PRIMARY KEY (student_id)
USING INDEX TABLESPACE student_index;
3、创建Unique约束
ALTER TABLE students
ADD CONSTRAINT uk_students_license
UNIQUE (state, license_no)
USING INDEX TABLESPACE student_index;
4、创建Check约束
ALTER TABLE students
ADD CONSTRAINT ck_students_st_lic
CHECK ((state IS NULL AND license_no IS NULL) OR
(state IS NOT NULL AND license_no is NOT NULL));
5、创建外键约束
ALTER TABLE students
ADD CONSTRAINT fk_students_state
FOREIGN KEY (state) REFERENCES state_lookup (state);
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |