4.4.2 外键约束

外键约束可以保证使用外键约束的数据库列与所引用的主键约束的数据列一致,外键约束在一个数据表中可以有多个。下面就来讲述外键约束的使用。

(1)使用外键约束创建商品信息表

外键约束是建立在两张表中的约束,需要在创建表的语句后面加上如下语句:


CONSTRAINT constraint_name FOREIGN KEY(column_name)

REFERENCE table_name(column_name)

ON DELETE CASCADE;


【语法说明】

❑constraint_name:创建的外键约束名字。

❑FOREIGN KEY(column_name):指定外键约束的列名。

❑REFERENCE:要引用的表名(列名)。

❑ON DELETE CASCADE:设置级联删除,当主键的字段被删除时,外键所对应的字段也被同时删除。

下面就利用上面的语句完成外键约束的创建。在创建商品信息表时有一个字段叫做商品类型,如果要让商品信息表中类型全部来源于商品类型信息表中的类型,就可以把商品信息表中商品类型设置成外键约束。这里为了不删除原有的表,新创建一张商品信息表(productinfo1)。具体操作语句如图4.15所示。

4.4.2 外键约束 - 图1

图 4.15 创建外键约束

这样,在商品信息表productinfo1的category字段中的数据就必须是商品类型信息表中已经存在的商品类型,也就保证了商品类型信息的一致性。

(2)在修改数据库表时添加外键约束

在已经存在的数据库表中也是可以添加外键约束的。添加外键约束是在ALTER TABLE语句后面加上如下语句:


ADD CONSTRAINT constraint_name FOREIGN KEY(column_name)

REFERENCE table_name(column_name)

ON DELETE CASCADE;


上面的语句和创建外键约束的语句一致,这里就不再详细讲解了。

下面就使用上面的语句,完成对之前已经创建好的商品信息表(productinfo)添加外键约束的操作。具体操作语句如图4.16所示。

4.4.2 外键约束 - 图2

图 4.16 添加外键约束

这样,就为表productinfo中的category字段添加了外键约束。

(3)移除外键约束

移除外键约束与移除主键约束的语法一致,这里以删除productinfo1中的外键约束fk_pro为例删除外键约束。具体删除语句如下:


ALTER TABLE productinfo1

DROP CONSTRAINT fk_pro;


这样,就移除了表productinfo1中的外键约束fk_pro。