2009-07-03 10 views
0

ReturnedOn列がクリックされた場合にのみ呼び出される更新トリガーを作成しようとしています。条件 - MS SQLサーバーのエラー

私は、次のコード・スニペットを使用しているが、それはエラーが発生します。

CODING:

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 

Errorステートメント:

メッセージ156、レベル15、状態1、プロシージャtrg_ForUpdateOnBookIssuedDetails、 9行目 キーワード 'begin'の近くに構文が正しくありません。

ReturnedOn列が更新された場合にのみトリガーを発生させたいですが、他の列が更新されてもトリガーは発生しません。

このエラーを修正するために必要なエラーと変更を教えてもらえますか?

ありがとうございます!

+1

あなたは本当に、構文エラーのためにSO依頼する必要がありましたか? – Welbog

答えて

3
... 
declare @Rows1 int,@Rows2 int 
if update(ReturnedOn) 
begin 
... 

余分な "(" 多分...?