【问题标题】:SQL Server Delete - Foreign KeySQL Server 删除 - 外键
【发布时间】:2011-02-19 10:45:10
【问题描述】:

我在 SQL Server 2005 中有两个表:

  • USER 表:用户等信息。
  • COUNTRY 表:保存世界上所有国家的列表。
  • 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 表中的关联记录直接删除。也许,通过使用外键约束?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 你的 FK 约束实际上指向了 COUNTRY 表并且会清除国家信息......
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我猜 CASCADE 是你唯一的选择。但是你真的想硬删除这样的记录吗?背景:我是一个数据恶魔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多