CREATE TABLE tb_emp4 ( id INT(11) PRIMARY KEY, name VARCHAR(22), location VARCHAR (50) );
CREATE TABLE tb_emp5 ( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT, CONSTRAINT fk_emp4_emp5 FOREIGN KEY (deptId) REFERENCES tb_emp4(id) );
mysql> SHOW CREATE TABLE tb_emp5\G; *************************** 1. row *************************** Table: tb_emp5 Create Table: CREATE TABLE `tb_emp5` ( `id` int(11) NOT NULL, `name` varchar(25) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, `salary` float DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_emp4_emp5` (`deptId`), CONSTRAINT `fk_emp4_emp5` FOREIGN KEY (`deptId`) REFERENCES `tb_emp4` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)由运行结果可以看出,tb_emp5 表为子表,具有名称为 fk_emp4_emp5 的外键约束;tb_emp4 为父表,其主键 id 被子表 tb_ emp5 所关联。
mysql> DROP TABLE tb_emp4; ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails由运行结果可以看出,当主表在存在外键约束时,不能被直接删除。
mysql> ALTER TABLE tb_emp5 DROP FOREIGN KEY fk_emp4_emp5; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0语句成功执行后,会取消表 tb_emp4 和表 tb_emp5 之间的关联关系。
DROP TABLE tb_emp4;
mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | tb_emp5 | | temp | +----------------+ 2 rows in set (0.00 sec)可以发现,数据库列表中已经不存在名称为 tb_emp4 的表,删除成功。
本文链接:http://task.lmcjl.com/news/13087.html