没有删除级联的外键

时间:2010-12-21 09:36:45

标签: sql cascading-deletes

我有两张桌子:

Challenge:

challengeID INTEGER PRIMARY KEY
...

UserChallenge:

ID INTEGER  PRIMARY KEY
challengeID INTEGER NOT NULL
...
FOREIGN KEY(challengeid) REFERENCES challenge(challengeID)

如果我在挑战表上有一行,challengeID = 1,在UserChallenge表上有一行,challengeID = 1。

如果我从挑战中删除行,UserChallenge表会发生什么?我可以将ON DELETE CASCADEUserChallenge.challengeID一起使用吗?

感谢。

2 个答案:

答案 0 :(得分:2)

你可以做一个测试......

如果从Challenge中删除该行,则会违反UserChallenge中对challengeID的约束。您还必须删除此表中的所有引用记录,或使用其他(正确)值更新这些记录或使用NULL。如果要删除引用记录,也可以使用ON DELETE CASCADE。

答案 1 :(得分:1)

DELETE CASCADEChallenge删除记录会导致UserChallenge中的所有子记录被删除。

也许这会有所帮助:http://en.wikipedia.org/wiki/Foreign_key#Referential_Actions