我有我的SQL數據庫3個表:缺失在多個表中與外鍵
assignresources
tasks
project
的project
表中的列
ID(pk),
Guid,
name,
startdate,
enddate
其他2代表具有Guid
列有一些其他的名字。如何刪除的所有表中相關行(匹配Guid
值)取決於排缺失Project
表通過ID
列?
我有我的SQL數據庫3個表:缺失在多個表中與外鍵
assignresources
tasks
project
的project
表中的列
ID(pk),
Guid,
name,
startdate,
enddate
其他2代表具有Guid
列有一些其他的名字。如何刪除的所有表中相關行(匹配Guid
值)取決於排缺失Project
表通過ID
列?
最簡單的方法是使用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
試試這個(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
您可以發佈您的表的DDL ? – Mureinik