我正在修改数据库的结构。表FinancialInstitution的几列内容必须转移到表Person中。FinancialInstitution通过外键链接到“人”。每个金融机构都需要其相应人员的ID。因此,对于在Person中插入的每个新行,此新行的ID(IDENTITY)必须复制回FinancialInstitution的相应行中。
显而易见的方法是迭代的T-SQL代码。但是我有兴趣知道是否只有基于集合的操作才有可能做到这一点。
我以为这样的请求的内部层是这样的:
INSERT INTO Person (Street1, Number1, City1, State1, PostCode1, CountryId1, WorkDirectPhone1, Fax1, Email1)
OUTPUT inserted.Id, FinancialInstitution.Id
SELECT Id, Street, Number, City, [State], PostCode, CountryId, PhoneNumber, Fax, Email
FROM FinancialInstitution;
不幸的是,看来OUTPUT无法以这种方式建立关联...
您的查询仅更新人员表。您可以捕获insert.ID,但不能捕获FinancialInstitution.ID,除非您在插入部分中使用它。查询的坐姿,如果删除了OUTPUT子句,则会出现错误,因为INSERT语句中的列数与SELECT语句不匹配。
—
datagod 2014年
ypercube:我想插入到Person中,然后使用Person中新行的ID更新FinancialInstitution。
—
Yugo Amaryl 2014年
datagod:我知道它唯一的更新,此查询是将来解决方案的嵌套级别。但是我已经被困在那里了。正确,如果我不插入ID,则无法将其添加到选择中。
—
Yugo Amaryl 2014年
@YugoAmaryl,您可以尝试采用此示例使用OUTPUT子句捕获多行插入中的标识值
—
DenisT 2014年
Person
?还是更新现有的?还是您想插入Person
然后UPDATE FinancialInstitution
?