在作用域_Identity()之后插入审核跟踪时发生SQL错误
我尝试使用存储过程在主表上执行插入,然后也将该数据插入到历史数据表中。我不想使用触发器,而只是简单地将所有列插入到历史表中。然而,我得到了这个错误 “只有在使用列列表且“identity_INSERT”处于启用状态时,才能为表'ipaudittrail'中的标识列指定显式值。” 我想这与Scope_Identity()有关?但我不太精通SQL,所以我不确定解决这个问题的最佳方法。如有任何建议,我们将不胜感激。谢谢在作用域_Identity()之后插入审核跟踪时发生SQL错误,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我尝试使用存储过程在主表上执行插入,然后也将该数据插入到历史数据表中。我不想使用触发器,而只是简单地将所有列插入到历史表中。然而,我得到了这个错误 “只有在使用列列表且“identity_INSERT”处于启用状态时,才能为表'ipaudittrail'中的标识列指定显式值。” 我想这与Scope_Identity()有关?但我不太精通SQL,所以我不确定解决这个问题的最佳方法。如有任何建议,我们将不胜感激。谢谢 Insert Input (OpenedByName, Owner, Desc
Insert Input
(OpenedByName, Owner, Description, WorkOfDate)
Values
(@vOpenedByFirstName, @vOwner, @vDescription, @vWorkOfDate)
Set @vRecID = Scope_Identity()
Insert InputAuditTrail
Select *
From Input
Where RecID = @vRecID
Select *
From Input
Where i.RecID = @vRecID
审计跟踪表不应在其
RecID
列上设置identity属性,因为您不希望它独立地自动递增。您需要修改表定义以反映这一点
既然这样做了,你就可以用这个子句来表示
Insert Input(OpenedByName,Owner,Description,WorkOfDate)
OUTPUT inserted.* INTO InputAuditTrail /*Inserts to Audit Table*/
OUTPUT inserted.* /*Returns to Client*/
Values (@vOpenedByFirstName,@vOwner,@vDescription,@vWorkOfDate)
审计跟踪表不应在其
RecID
列上设置identity属性,因为您不希望它独立地自动递增。您需要修改表定义以反映这一点
既然这样做了,你就可以用这个子句来表示
Insert Input(OpenedByName,Owner,Description,WorkOfDate)
OUTPUT inserted.* INTO InputAuditTrail /*Inserts to Audit Table*/
OUTPUT inserted.* /*Returns to Client*/
Values (@vOpenedByFirstName,@vOwner,@vDescription,@vWorkOfDate)
这将返回许多列,其中一列正试图写入InputAuditRail的标识列
将该语句替换为
Insert InputAuditTrail(col1, col2, ./...) Select cola, colb, .... From Input Where RecID = @vRecID
这将返回许多列,其中一列正试图写入InputAuditRail的标识列
将该语句替换为
Insert InputAuditTrail(col1, col2, ./...) Select cola, colb, .... From Input Where RecID = @vRecID
+1我不知道您可以将
输出
拆分为返回和。整洁的不知道输出。谢谢分享+1我不知道您可以将输出
拆分为返回和。整洁的不知道输出。谢谢分享!