使用外键合并行以进行连接

时间:2012-11-22 16:44:51

标签: tsql sql-server-2005 merge foreign-keys

我在SQL Server 2005数据库中有一个表,它与其他表有很多连接。基表通常会获得重复的条目,我们编写了一个存储过程来移动所有连接表中的数据,然后删除重复的条目。

问题是,随着项目的不断增长,连接表的数量开始变得无法管理,有时开发人员忘记更新存储过程,然后合并过程将失败。

TSQL中是否有更平滑的合并功能?我在想,因为所有表都与foreign keys连接,所以需要更新/插入的表很可能只是通过读取表连接来计算。

表结构如下所示:

Main table
------------------------
mainid (PK) | datacolumns...

Sub table 1:
------------------------
subid1 (PK) | mainid (FK) | datacolumns...

Sub table 2:
------------------------
subid2 (PK) | mainid (FK) | datacolumns...

Sub table 3:
------------------------
subid3 (PK) | datacolumns...

Connection table between "Main table" and "Sub table 3":
------------------------
mainid (FK) | subid3 (FK)

现在我在Main table中有两行,可能会也可能没有Sub table 1Connection table中的子条目。

应始终使用新的Sub table 1更新

mainidSub table 2Connection table具有唯一的密钥限制,因此如果条目尚不存在,则只应使用新的mainid进行更新。

这是一个粗略的过度简化,因为我们正在谈论超过20个表(并且正在增长),每个表都对条目的唯一性有自己的限制,如果它们不存在,应该/不应该复制数据表根据唯一键。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,ON DELETE CASCADE必要的外键可以解决您的问题。这样,从“主”表中删除条目将删除通过FK连接的其他表中的条目。