2009-07-03 10 views
0

J'essaie de créer un déclencheur de mise à jour qui ne devrait être appelé que si la colonne ReturnedOn est cliquée.Erreur dans la condition if - MS SQL server

J'ai utilisé le suivant bout de code, mais il génère l'erreur:

CODAGE:

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 

DÉCLARATION D'ERREUR:

Msg 156, Niveau 15, État 1, Procédure trg_ForUpdateOnBookIssuedDetails, Ligne 9 Syntaxe incorrecte près du mot clé 'begin'.

Je souhaite que le déclencheur soit déclenché uniquement si la colonne ReturnedOn est mise à jour, mais si une autre colonne est mise à jour, le déclencheur ne doit pas être déclenché.

Quelqu'un peut-il m'aider à identifier l'erreur et les modifications que je devrais apporter pour corriger cette erreur?

Merci d'avance !!

+1

Avez-vous vraiment besoin de demander SO pour une erreur de syntaxe? – Welbog

Répondre

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

Un supplément "(" peut-être ...?

Questions connexes