2010-05-14 78 views
1

我有SQL Server 2005中的两个表:SQL服务器删除 - 外键

  • 用户表:有关用户的信息等。
  • 国家表格:拥有世界上所有国家的名单。
  • 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_COUNTRY表相关的记录直接删除。也许,通过使用外键构造?

回答

0

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

1

你必须定义在USER_COUNTRY一个外键指向USER.UserID和一套级联删除:

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

您的FK约束实际上指向COUNTRY表并将消除国家信息....... – 2010-05-14 09:44:31

+1

@marc_s:谢谢,我刚刚修复了代码。 – 2010-05-17 08:06:13

0

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