首页 > 代码库 > 外键约束

外键约束

 外键约束是确保表中数据正确性的一个手段,它经常与主键约束一起使用。外键约束是用来约束两个表中数据的一致性的。

1、  在创建表时为其设这外键约束语法如下:

“ALTER TABLE table_name

Column_name1datatype,

Column_name2 datatype,

Column_name3 datatype

CONSTRAINT fk_name FOREIGN KEY(列表1) references  table_name1(列表2)

);”*这里,fk_name是外键约束的名称,列名1是设置外键约束的列,table_name1是父表的名字,列名2是父表中主键列。

【示例2】创建客房类型信息表(typeinfo),在创建客房信息表(roominfo),并为其中房间类型(roomtype)列创建外键约束。

编号

数据类型

约束1

Interger

房间类型

Roomtype

20

<span font-style:normal;"="" style="word-wrap: break-word;"> 

创建客房类型信息表的代码如下所示:

 “CREATE TABLE TYPEINFO

(

ROOMTYPEID INT PEIMARY KEY

ROOMTYPE VACHAR(20)

);”

 

创建客房信息表(Roominfo)时为房间类型(Roomtype)列添加外键约束的代码如下:

 CREATE TABLE TYPEINFO

(

ROOMID INT PRIMARY KEY,

ROOMTYPEID INT,

ROOMPRICE NUMERIC(72),

ROOMSTATE VARCHAR(2),

PEMARK VARCHAR(200),

CONSTRAINT PK_ROOMINFO   FOREIGN   KEY(ROOMID)     REFFERENCES

TYPEINFO(ROOMTYPEID)

);

在修改表时添加外键约束

 外键约束也可以在修改表时添加,但是添加外键约束的前提是设置外键约束的列中的数据必须与引用的主键表中字段一致或者是没有数据。

在修改表时添加外键外键约束的语法如下:

CREATE TABLE table_name

ADD CONSTRAINT fk_name  FOREIGN KEY(列名1REFERENCES  table_name2(列表2)  *这里,fk_name是外键约束的名称,列名1table_name1中设置外键约束的列;table_name2是父表的名字;列名2是父表中的主键列。

【示例1】假设客房信息表(ROOMINFO)已经存在,现要为客房信息表(RoomInfo)中房间类型编号列(RoomTypeId)添加外键约束,使其引用房间类型表(TypeInfo)中房间类型编号列(RoomTypeId)。

代码如下:

  ALTER TABLE RoomInfo

ADD CONSTRAINT fk_name roomtypeid FORRIGN KEY(RoomTypeId) REFERECES

TypeInfo(RoomTypeId)

删除外键约束

  当一个表中不需要外键约束时,就需要从表中将其删除。删除外键约束的方法要比创建外键约束容易多,删除外键约束的语法如下所示:

  ALTER TABLE table_name

DROP FOREIGN  KEY FK_NAME;

这里,FK_NAME是外键约束的名字,下面示例来演示如何删除主键约束。

【示例1】删除客房信息表(RoomInfo)中外键约束fk_roomtypeid.

ALTER TABLE ROOMINFO

DROP FOREIGN KEY FK_ROOMTYPEID;