2

我有以下 MySQL InnoDB 表...

TABLE foldersA (
 ID
 title
)

TABLE foldersB (
 ID
 title
)

TABLE records (
 ID
 folderID
 folderType
 title
)

表“records”中的folderID 可以指向“foldersA”或“foldersB”中的ID,具体取决于folderType 的值。(0 或 1)。

我想知道:

有没有办法创建一个 CASCADE 规则,以便在删除文件夹 A 或文件夹 B 中的行时自动删除表记录中的相应行?

或者在这种情况下,我是否被迫以编程方式删除表“记录”中的行?

谢谢你的帮助!

4

1 回答 1

0

通常,

如果你有一个 A 类型的东西和一个 B 类型的东西,你应该为“文件夹”创建一个表,然后创建一个“文件夹 A”和“文件夹 B”来保存每种类型唯一的数据。然后你可以像你想要的那样从“记录”创建一个指向“文件夹”的外键约束。如果您在“foldersA”和指向“folders”(ID)的“foldersB”上设置了 CASCADE DELETE 约束,则删除父记录将删除相应子表中的附加记录。

您的另一种选择是在“foldersA”和“foldersB”上使用 TRIGGER 来检查子行的“记录”并删除它们。

于 2010-06-12T22:12:48.837 回答