我在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 1
和Connection table
中的子条目。
Sub table 1
更新 mainid
。 Sub table 2
和Connection table
具有唯一的密钥限制,因此如果条目尚不存在,则只应使用新的mainid
进行更新。
这是一个粗略的过度简化,因为我们正在谈论超过20个表(并且正在增长),每个表都对条目的唯一性有自己的限制,如果它们不存在,应该/不应该复制数据表根据唯一键。
任何帮助表示赞赏!
答案 0 :(得分:0)
如果我理解正确,ON DELETE CASCADE
必要的外键可以解决您的问题。这样,从“主”表中删除条目将删除通过FK连接的其他表中的条目。