数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因直接删除,将破坏表的参照完整性。 如果必须要删除,可以先删除与它关联的子表,再删除父表,只是这样会同时删除两个表中的数据。但有的情况下可能要保留子表,这时如要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表了。
【例4.5】定义数据表tb_emp5,并在tb_emp5表上创建外键约束。
创建一个部门表tb_dept1,SQL语句如下:
CREATE TABLE tb_dept1
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
);
定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:
CREATE TABLE tb_emp5
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);
以上语句执行成功之后,在表tb_emp5上添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id。