【发布时间】:2012-03-06 00:47:08
【问题描述】:
我有两种不同的文档。一种是按文件夹组织的。另一个是由客户组织的。这是mysql中的表结构:
Table docs
ID
title
Table folderDocs
docID -> docs(ID)
folderID -> folders(ID) ON DELETE CASCADE
Table clientDocs
docID -> docs(ID)
clientID -> clients(ID) ON DELETE CASCADE
我正在寻找一种优雅的方式来在删除文件夹或客户端时自动删除文档。上述级联规则并不能完全做到这一点。 (即folderDocs中的行会被删除,但docs中对应的行会保留。)
有没有办法在mysql中设置这个,使用级联规则或其他方法,这样当级联删除folderDocs或clientDocs中的一行时,docs中的相应行也被删除? (我希望避免必须先以编程方式删除文档,然后再删除文件夹/客户端。)
感谢(提前)您的帮助。
【问题讨论】:
-
这可能是个愚蠢的问题,但是您是否在表中将
docID设置为外键?因为你想要的听起来就像ON DELETE CASCADE所做的一样,但除非你设置了外键,否则它不会起作用。 -
为什么不使用 DELETE 触发器?
-
@Rogier - 如果删除是级联的,我认为 DELETE 触发器不起作用。如果我对此有误,请纠正我。
-
好吧,我也不确定。但我认为您可以删除 CASCADE DELETE 并在每个表上实现触发器。那么应该没问题,应该可以正常工作。
标签: php mysql cascading-deletes