SQL Server删除 - 外键

时间:2010-05-14 09:03:55

标签: sql-server-2005 foreign-keys cascading-deletes

我在SQL Server 2005中有两个表:

  • USER表:有关用户的信息等。
  • 国家表:列出全球所有国家的名单。
  • USER_COUNTRY表:哪个用户访问了哪个县。 它包含,UserID和CountryID。

例如,USER_COUNTRY表如下所示:

+----+--------+-----------+
| ID | UserID | CountryID |
+----+--------+-----------+
|  1 |      1 |        34 |
|  2 |      1 |         5 |
|  3 |      2 |        17 |
|  4 |      2 |        12 |
|  5 |      2 |        21 |
|  6 |      3 |        19 |
+----+--------+-----------+

我的问题是:在USER表中删除用户时,如何直接删除USER_COUNTRY表中的关联记录。也许,通过使用外键Constaint?

3 个答案:

答案 0 :(得分:1)

您必须在USER_COUNTRY中定义指向USER.UserID并设置级联删除的外键:

CREATE TABLE USER_COUNTRY (
    ...
    CONSTRAINT USER_COUNTRY_FK1 FOREIGN KEY (UserID)
        REFERENCES USER(UserID)
        ON DELETE CASCADE
);

答案 1 :(得分:0)

是的,您可以将外键关系删除规则设置为Cascade。

答案 2 :(得分:0)

我猜CASCADE是你唯一的选择。但你真的想要删除这样的记录吗?上下文:我是数据恶魔。