Oracle数据库定义约束 外键约束_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Oracle定义约束 外键约束

作者:黑客防线网安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);

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-12846-1.html
网站维护教程更新时间:2012-03-23 00:46:43  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer