2014-01-23 93 views
0

我有我的SQL數據庫3個表:缺失在多個表中與外鍵

assignresources 
tasks 
project 

project表中的列

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

其他2代表具有Guid列有一些其他的名字。如何刪除的所有表中相關行(匹配Guid值)取決於排缺失Project表通過ID列?

+1

您可以發佈您的表的DDL ? – Mureinik

回答

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

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