7.3.1 在创建表时添加外键约束
外键约束的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联的行。添加外键约束的语法规则如下:
CREATE TABLE table_name ( col_name1 datatype, col_name2 datatype, col_name3 datatype …… CONSTRAINT fk_name FOREIGN KEY(col_name1, col_name2,…) REFERENCES referenced_table_name(ref_col_name1, ref_col_name1,…) );
• fk_name:定义的外键约束的名称,一个表中不能有相同名称的外键。
• col_name1:表示从表需要添加外键约束的字段列,可以由多个列组成。
• referenced_table_name:被从表外键所依赖的表的名称。
• ref_col_name1:被应用的表中的列名,也可以由多个列组成。
【例7.6】在test数据库中,定义数据表tb_emp3,并在tb_emp3表上添加外键约束。
首先创建一个部门表tb_dept1,表结构如表7-1所示。打开【查询编辑器】窗口,在其中输入T-SQL语句:
CREATE TABLE tb_dept1 ( id INT PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50) NULL );
表7-1 tb_dept1表结构
单击【执行】按钮,即可完成创建数据表的操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图7-13所示。
图7-13 创建表tb_dept1
执行完成之后,选择创建的数据表,然后打开该数据表的设计图,即可看到该数据表的结构,如图7-14所示。
图7-14 tb_dept1表的设计图
下面定义数据表tb_emp3,让它的键deptId作为外键关联到tb_dept1的主键id。打开【查询编辑器】窗口,在其中输入T-SQL语句:
CREATE TABLE tb_emp3 ( id INT PRIMARY KEY, name VARCHAR(25), deptId INT, salary FLOAT, CONSTRAINT fk_员工部门编号 FOREIGN KEY(deptId) REFERENCES tb_dept1(id) );
单击【执行】按钮,即可完成在创建数据表时添加外键约束的操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图7-15所示。
图7-15 创建表的外键约束
执行完成之后,选择创建的数据表tb_emp3;然后打开该数据表的设计图,即可看到该数据表的结构,如图7-16所示。
图7-16 tb_emp3表的设计图
最后,在添加完外键约束之后,查看添加的外键约束,方法是:选择要查看的数据表节点,例如这里选择tb_dept1表,右击该节点,在弹出的快捷菜单中选择【查看依赖关系】菜单命令,打开【对象依赖关系】窗口,将显示与外键约束相关的信息,如图7-17所示。
图7-17 【对象依赖关系】窗口
提示
外键一般不需要与相应的主键名称相同,但是,为了便于识别,当外键与相应主键在不同的数据表中时通常使用相同的名称。另外,外键不一定要与相应的主键在不同的数据表中,也可以是同一个数据表。