如何删除其他数据库表中的行

时间:2013-01-05 05:26:14

标签: sql

下面有4个db表,它们共同包含SessionId字段作为外键或主键:(下面显示的表不是完整的表,只是缩短的版本供您查看)< / p>

会话表:

SessionId (PK) SessioName
1              AAA
2              AAB

Session_Completed表

SessionId (PK) Complete
1              0
2              1

问题表

SessionId (PK) QuestionId(PK) (Composite Keys)
1              1
1              2
2              1
2              2

答案表

AnswerId(PK) SessionId(FK)  QuestionId
   1              1          1
   2              1          1
   3              1          2
   4              2          1
   5              2          2
   6              2          2

我的问题是,如果SessionId表中的Session_Completed从数据库中删除,那么删除包含相同{{1}的所有其他表中的行是可能的}?

如果从SessionId表中删除SessionId,我也想做同样的事情。

由于

1 个答案:

答案 0 :(得分:0)

您希望将ON DELETE CASCADE添加到外键约束中。

首先,删除当前约束而不进行级联删除。

ALTER TABLE Session_Completed
DROP PRIMARY KEY pk_SessionId

然后,使用ON DELETE CASCADES:

重新添加约束
ALTER TABLE Session_Completed
  add CONSTRAINT fk_sessionid
    FOREIGN KEY (SessionId)
    REFERENCES session(SessionId)
    ON DELETE CASCADE;