使用外键删除多个表

时间:2014-01-23 06:32:36

标签: mysql sql sql-server

我的sql数据库中有3个表:

assignresources
tasks 
project

project表有列

ID(pk),
Guid,
name, 
startdate, 
enddate

其他2个表的Guid列包含其他一些名称。如何删除所有表中的相关行(具有匹配的Guid值),具体取决于Project表中{@ 1}}列中的行删除?

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用InnoDB引擎,并定义ON DELETE CASCADE。因此,当删除父表中的行时,将自动删除所有子表中的相关数据。

例如,对于任务表:

CREATE TABLE `tasks` (
`tasks_Guid` int(11) NOT NULL,
INDEX (`tasks_Guid`),
CONSTRAINT FOREIGN KEY (`tasks_Guid`) 
    REFERENCES `project` (`Guid`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;

MySql on delete cascade concept?

http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

答案 1 :(得分:0)

试试这个(XXXXX =项目ID):

DELETE project . * , tasks . * , assignresources . * 
FROM project 
LEFT JOIN tasks ON tasks.Guid = project.Guid 
LEFT JOIN assignresources ON assignresources.Guid = project.Guid 
WHERE project.ID = XXXXX