繁体   English   中英

如何删除表中的记录,该表的主键在另一个表中被引用为外键?

[英]How do I delete a record in a table which has a primary key referenced in another table as foreign key?

在我的数据库中,我有一个表,上面写着“employee”,它有一个主键属性“employee_id”和另一个属性“salary”。 还有一个表说“employee_qualification”,它有一个外键属性“employee_id”。 那么,如何从“employee”和“employee_qualifications”中删除salary=10000的所有记录?

这似乎不起作用。

DELETE FROM employee WHERE employee.salary=10000;

您可以执行两条语句。

DELETE FROM employee_qualifications WHERE employee_qualifications.employee_id in (SELECT employee_id FROM employee WHERE employee.salary=10000)
DELETE FROM employee WHERE employee.salary=10000

虽然这会起作用,但它可能会在employee_qualifications 表中留下一些孤立的记录。 下面的选项将清除孤立的记录。

DELETE FROM employee WHERE employee.salary=10000
DELETE FROM employee_qualifications WHERE employee_qualifications.employee_id Not in (SELECT employee_id FROM employee)

MySQL 允许同时从多个表中删除。 所以你可以这样做:

DELETE e, eq
    FROM employee e JOIN
         employee_qualitifications eq
    WHERE e.employee_id = eq.employee_id AND
          e.salary = 10000;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM