phpmyadmin mySQL删除时出现意外标记

rsl1atfo  于 2022-11-09  发布在  PHP
关注(0)|答案(2)|浏览(183)

我在PHP myadmin(存储引擎InnoDB)中有多个删除查询的问题。这是我的数据库:

这是我的疑问:

DELETE placement, employees
FROM placement, employees
WHERE placement.id_emp = employees.id_emp
AND employees.id_emp = 113;

错误:

分析过程中发现3个错误。
意外的标记。(位置7处的“placement”附近)意外的标记。(位置16处的“”附近)意外的标记。(位置18处的“employees”附近)
1451 -无法删除或更新父行:外键约束失败(employment. placement,约束placement_ibfk_1外键(id_emp)引用employeesid_emp))
我根据本教程编写了该查询:http://www.mysqltutorial.org/mysql-delete-statement.aspx
有人能帮我吗?

rjjhvcjd

rjjhvcjd1#

如果使用"DELETE FROM placement, employees USING placement, employees WHERE ..."会怎样?

ipakzgxi

ipakzgxi2#

虽然是旧帖子,但可能将来也会有人需要帮助,所以在这里更新-
似乎有两个问题-
第一个外键问题-要解决此问题,您需要先从子表中删除记录,然后再从主表中删除。但是,如果您不想绕过此问题(不建议这样做),则可以按照以下步骤操作-

SET FOREIGN_KEY_CHECKS=0;<YOUR DELETE STATEMENT>; SET FOREIGN_KEY_CHECKS=1;

注意:它将跳过外键检查。
第二个问题似乎是SQL语法,甚至我没有验证它。所以你可以写代码如下-
如果您想从单个表中删除数据,如从雇员中删除数据,请使用-

DELETE employees.*
FROM placement, employees
WHERE placement.id_emp = employees.id_emp
AND employees.id_emp = 113;

如果您想从两个表中删除数据,例如从雇员和职位中删除数据,请使用-

DELETE placement.*, employees.*
FROM placement, employees
WHERE placement.id_emp = employees.id_emp
AND employees.id_emp = 113;

相关问题