有没有人知道复制多个表行及其相关项的简单方法?
在我的简化示例中,我有两个表,一个用于公司表,一个用于员工,我希望能够以简单的方式与所有员工一起克隆整个公司。
[Companies]
- ID (Auto-increment)
- Name
[Employees]
- ID
- CompanyID (Foreign Key)
- Name
我一直在使用OUTPUT
- 子句,但只是设法返回插入的ID而不引用原始行。
我无法弄清楚如何将插入的行与原始行相关联?
如果insert-statement返回了这样的表:
@mappingTable
-InsertedCompanyID
-OriginalCompanyID
我可以运行这样的声明来复制所有员工:
INSERT INTO Employees (CompanyID, Name)
SELECT m.InsertedCompanyID, x.Name FROM @mappingTable m
INNER JOIN Employees x (x.CompanyID = m.OriginalCompanyID)
或者我走错了路?有没有更好的方法来实现这一目标?
答案 0 :(得分:1)
您可以使用merge
语句的output子句在旧ID和新的自动增量ID之间进行映射。
看一下这个问题:Using merge..output to get mapping between source.id and target.id