T-SQL:将OTLT表拆分成多对多关系

时间:2015-08-01 03:04:59

标签: sql-server entity-framework tsql table-splitting

我有一个实体框架应用程序。有一个表开始引起很多问题,主要是因为它不符合EF约定:

old table

两个重要的列是RequestTypeRequestDetailId。每种类型的请求都有自己的标识列。由于这些身份可以跨表重叠,因此有一个RequestType字段可以唯一地将批准与请求相关联。

我打算用Approval表替换这个“One True Lookup Table”,并为每个请求表替换一个单独的多对多表,将请求链接到批准:

new table

我有几个请求已经指向这个新的批准表,我喜欢它在EF中的工作方式。但是,我很难从旧表迁移到新表。到目前为止,我一直使用游标循环遍历旧数据,插入新的Approval表并使用标识(SELECT SCOPE_IDENTITY())插入到多对多表中。我需要一个游标,因为我需要跟踪每个新批准记录的批准标识值,因此我可以用它填充多对多表。

我很好奇是否有人知道如何在不需要光标的情况下进行两次插入。游标很好,但很难阅读。

一种想法是暂时向Approval表添加一个请求ID字段,插入带有请求ID的批准,然后将该信息加入旧表以填充多对多表。在两次插入之后,我将删除请求ID列。我不喜欢将可空的请求ID列添加到现有表中以进行迁移的想法。

我很好奇是否有人想到一种方法可以将旧的查找表拆分为新的批准/多对多表而不使用游标。

0 个答案:

没有答案