mysql学习问题-Cannot delete or update a parent row
执行语句:DELETE FROM t_dept WHERE dept_no = '30';报错
Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t_employee`, CONSTRAINT `t_employee_ibfk_1` FOREIGN KEY (`dept_no`) REFERENCES `t_dept` (`dept_no`))
原因:MySQL设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。
SET FOREIGN_KEY_CHECKS = 0 //关闭外键约束
进行完操作后记得再把外键约束重新打开;
SET FOREIGN_KEY_CHECKS = 1 //打开外键约束
DROP TABLE t_dept; CREATE TABLE t_dept( dept_id INT(3) PRIMARY KEY, dept_no INT UNIQUE NOT NULL, dept_name VARCHAR(20) NOT NULL ); DROP TABLE t_employee; CREATE TABLE t_employee( emp_id INT(3) PRIMARY KEY, emp_no INT(3) UNIQUE NOT NULL, emp_name VARCHAR(10) NOT NULL, emp_age tinyint(4) NOT NULL DEFAULT 25 CHECK (emp_age BETWEEN 20 AND 60), sex VARCHAR(1) CHECK (sex in ('男','女')), job VARCHAR(20), sal INT(10), -- inline写法 -- REFERENCES 主表(主表字段) -- dept_no int REFERENCES t_dept(dept_no) -- outline写法 dept_no int NOT NULL, FOREIGN KEY(dept_no) REFERENCES t_dept(dept_no) ); insert into t_dept values(1,10,'IT技术部门'); insert into t_dept values(2,20,'市场部'); insert into t_dept values(3,30,'人事部'); -- 再插入员工数据 INSERT INTO `test`.`t_employee` (`emp_id`,`emp_no`,`emp_name`,`emp_age`,`sex`,`job`,`sal`,`dept_no`) VALUES(1,1,'张三',25,'男','软件开发',8500,10); INSERT INTO `test`.`t_employee` (`emp_id`,`emp_no`,`emp_name`,`emp_age`,`sex`,`job`,`sal`,`dept_no`) VALUES(2,102,'张天三',29,'男','初级软件开发',4500,10); INSERT INTO `test`.`t_employee` (`emp_id`,`emp_no`,`emp_name`,`emp_age`,`sex`,`job`,`sal`,`dept_no`) VALUES(3,103,'张一',36,'男','测试人员',7500,10); INSERT INTO `test`.`t_employee` (`emp_id`,`emp_no`,`emp_name`,`emp_age`,`sex`,`job`,`sal`,`dept_no`) VALUES(4,104,'王张三',63,'男','人事主管',12500,20); INSERT INTO `test`.`t_employee` (`emp_id`,`emp_no`,`emp_name`,`emp_age`,`sex`,`job`,`sal`,`dept_no`) VALUES(5,105,'发呆张三',60,'男','高级程序员',18500,10); INSERT INTO `test`.`t_employee` (`emp_id`,`emp_no`,`emp_name`,`emp_age`,`sex`,`job`,`sal`,`dept_no`) VALUES(6,106,'快乐张三',30,'男','销售经理',10500,30); SELECT * FROM t_employee; SELECT * FROM t_dept; -- MySQL设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 -- Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t_employee`, CONSTRAINT `t_employee_ibfk_1` FOREIGN KEY (`dept_no`) REFERENCES `t_dept` (`dept_no`)) DELETE FROM t_dept WHERE dept_no = '30'; SET FOREIGN_KEY_CHECKS = 0; DELETE FROM t_dept WHERE dept_no = '30'; -- 删除完后记得外键约束重新打开; SET FOREIGN_KEY_CHECKS = 1;
标签:
Mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律