以下查询在事务中插入许多记录。我想获取新创建的增量标识符,并在下一个INSERT
语句
对于单个记录,我可以使用如下
SELECT @new_emp_id= SCOPE_IDENTITY()
多个记录的SCOPE_IDENTITY
怎么样?或者我们可以将它插入临时表并循环通过它?
INSERT EmployeeBenifits(EmployeeId,BenifitID,StartdateTime,EndDateTime)
SELECT @new_emp_id,BenifitID,GetDate(),@PassedEndDate FROM Benifits
INSERT EmployeeBenifitDetails(EmpBenId,Desc)
SELECT EmpBenId,'Created Details' FROM @NewlyInsertedEmplBenifits
答案 0 :(得分:10)
您应该查看OUTPUT
子句:
INSERT INTO dbo.EmployeeBenefits(EmployeeId, BenefitID, StartdateTime, EndDateTime)
OUTPUT Inserted.EmployeeBenefitId, Inserted.EmployeeID, Inserted.BenefitID -- or whatever you want to return here
SELECT
@new_emp_id, BenefitID, GetDate(), @PassedEndDate
FROM
dbo.Benefits
基本上,OUTPUT
子句可以为已插入的每一行返回一组结果列(也适用于DELETE
和UPDATE
语句。
See MSDN documentation for more details
您还可以将OUTPUT
行发送到临时表(或表变量),以便稍后进一步处理。