【问题标题】:Error in if condition - MS SQL serverif 条件错误 - MS SQL 服务器
【发布时间】:2010-11-07 23:14:54
【问题描述】:

我正在尝试创建仅在单击 ReturnedOn 列时才应调用的更新触发器。

我使用了以下代码-sn-p,但它会产生错误:

编码:

CREATE TRIGGER trg_ForUpdateOnBookIssuedDetails
on BOOKISSUEDDETAILS
For update
as
begin
declare @Rows1 int,@Rows2 int
if(update(ReturnedOn)
begin

IF EXISTS(SELECT 1 FROM INSERTED)
begin
update nur
set nur.NumberOfBooksIssued = nur.NumberOfBooksIssued -1
from NewUserRegister nur inner join INSERTED i
on i.IssuedTo=nur.UserName

set @Rows1 = @@RowCount

update lbd set Inventory = Inventory +1
from LIBRARYBOOKDETAILS lbd inner join inserted i
on lbd.BookID = i.BookId


set @Rows2 = @@rowcount

if @Rows1 * @rows2 >0
commit tran
else
begin
raiserror('Error Updating the Database',16,-1)
rollback tran
end
end
end
end

错误声明:

消息 156,级别 15,状态 1,过程 trg_ForUpdateOnBookIssuedDetails,第 9 行 关键字“begin”附近的语法不正确。

我希望仅在 ReturnedOn 列更新时触发触发器,但是如果任何其他列更新,则不应触发触发器。

谁能帮我找出错误和我应该做出的改变来纠正这个错误?

提前致谢!!

【问题讨论】:

  • 您真的需要向 SO 询问语法错误吗?

标签: sql sql-server tsql triggers


【解决方案1】:
...
declare @Rows1 int,@Rows2 int
if update(ReturnedOn)
begin
...

一个额外的“(”也许......?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多