相关疑难解决方法(0)

当触发器在表上时,不能将UPDATE与OUTPUT子句一起使用

我执行UPDATEOUTPUT查询:

UPDATE BatchReports
SET IsProcessed = 1
OUTPUT inserted.BatchFileXml, inserted.ResponseFileXml, deleted.ProcessedDate
WHERE BatchReports.BatchReportGUID = @someGuid
Run Code Online (Sandbox Code Playgroud)

这句话很好,很好; 直到在表上定义了一个触发器.然后我的UPDATE陈述将得到错误334:

如果语句包含没有INTO子句的OUTPUT子句,则DML语句的目标表'BatchReports'不能具有任何已启用的触发器

现在,SQL Server团队博客文章中解释了这个问题:

错误消息是不言自明的

他们还提供解决方案:

该应用程序已更改为使用INTO子句

除了我无法做出整篇博文的正面或反面.

所以让我问一下我的问题:我应该改变什么UPDATE才能使它有效?

也可以看看

sql sql-server sql-server-2008-r2

59
推荐指数
2
解决办法
4万
查看次数

重置SCOPE_IDENTITY()

我有一个存储过程,首先将一些数据插入临时表,然后将行插入另一个表.我在第二次插入后调用Scope_Identity()来获取新插入的记录Identity.

如果第二个插入由于连接而没有做任何事情,我想检查Scope_Identity并引发异常.但Scope_Identity返回在第二次插入之前从临时表插入创建的最后一个标识.

有没有办法在调用第二个插入之前重置SCOPE_IDENTITY,或者更好的方法来确定第二个插入是否实际上没有插入任何内容?

t-sql sql-server stored-procedures

8
推荐指数
2
解决办法
3076
查看次数

在SQL Server 2005中插入行后的主键值

在SQL Server 2005中,我使用存储过程将一行插入表中,我想在插入该行后立即获取新的主键值.我使用以下方法来获取插入行后的主键值

Create Proc Sp_Test
@testEmail varchar(20)=null,-- Should be Unique
@testName varchar(20)=null -- Should be Unique
as

begin

insert into tableTest  (testUserEmail,testUserName)values (@testValue,@testName)

select MAX(ID) from tableTest --ID is Primary Key 
Run Code Online (Sandbox Code Playgroud)

- 要么

select ID from tableTest  where  testUserEmail =@testValue and testUserName = @testName
Run Code Online (Sandbox Code Playgroud)

- 要么

select  SCOPE_IDENTITY() as ID

end
Run Code Online (Sandbox Code Playgroud)

请建议我哪种方法更好地执行所描述的任务.

stored-procedures sql-server-2005 primary-key insert-update

3
推荐指数
1
解决办法
9842
查看次数

在表中插入行并将其范围标识存储在存储过程的变量中

我是存储过程的新手,只知道SQL的基础知识.在一些SO问题的帮助下,我能够发现该SCOPE_IDENTITY()函数可用于获取最近添加的行的标识值.现在我尝试使用存储过程在表中插入一行,并且我希望必须将此新插入行的标识分配给存储过程的变量.以下是代码:

DECLARE @retID int = -1
SET @retID = (INSERT INTO [InfoValues]([InfoID],[Value],[UserID],[DateAdded],[DateUpdated]) VALUES(@item2,@item,@UserID,GETDATE(), GETDATE()); SELECT SCOPE_IDENTITY())
Run Code Online (Sandbox Code Playgroud)

但是此代码在INSERT子句中显示语法错误.那么正确的方法是什么?

sql database sql-server stored-procedures sql-server-2012

1
推荐指数
1
解决办法
92
查看次数