【发布时间】: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