与cascade或set null删除的多对多关系?

时间:2017-12-31 17:13:46

标签: mysql sql

我有两张桌子:

LanguagesOccasions

在这些表之间有第三个相关表:

Occasions_has_languages

具有以下结构:

id | languege_id | occasion_id
1    1             1

如果我使用id = 1删除语言,则可以在

中存储NULL
Occasions_has_languages.languege_id

与删除occasion相同我可以将NULL设置为

Occasions_has_languages.occasion_id

Occasions_has_languages.languege_idOccasions_has_languages.occasion_id为NULL时,应该永久删除它。

我对此是对的吗?

1 个答案:

答案 0 :(得分:1)

在N:N关系的情况下,中间表(在您的情况下为Occasions_has_languages)仅用于关系定义,因此其中的null值没有意义,因为它们没有定义关系表之间。

在这种情况下,正确的方法是将on delete cascade用于Occasions_has_languagesLanguagesOccasions的引用,以便自动删除不完整的引用。