Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在作用域_Identity()之后插入审核跟踪时发生SQL错误_Sql_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

在作用域_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

我尝试使用存储过程在主表上执行插入,然后也将该数据插入到历史数据表中。我不想使用触发器,而只是简单地将所有列插入到历史表中。然而,我得到了这个错误

“只有在使用列列表且“identity_INSERT”处于启用状态时,才能为表'ipaudittrail'中的标识列指定显式值。”

我想这与Scope_Identity()有关?但我不太精通SQL,所以我不确定解决这个问题的最佳方法。如有任何建议,我们将不胜感激。谢谢

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我不知道您可以将
输出
拆分为返回和
。整洁的不知道输出。谢谢分享!