i have this trigger in my database :
ALTER TRIGGER dbo.AddVoucher
ON dbo.User_AddVoucher
AFTER INSERT
AS
SET NOCOUNT ON;DECLARE @.UserId int,
@.Add_id int,
@.voucher_id char,
@.Kredit money,
@.date smalldatetime,
@.last_balance money,
@.voucher_status charSELECT @.UserId = UserId,
@.voucher_id = Voucher_ID,
@.Add_id = Add_id,
@.date = Deposit_Date
FROM InsertedSELECT @.Kredit= Voucher_Value,
@.voucher_status = Voucher_Status
FROM Voucher
WHERE Voucher_ID = @.voucher_idINSERT INTO User_Balance(AddVoucher_ID, UserId, Update_Type, Update_Date)
VALUES (@.Add_id,@.UserId, 'Kredit',@.date)select @.last_balance = Balance
from User_Balance
WHERE UserId = @.UserId and Balance = (select TOP 1 Balance User_Balance where UserId = @.UserId order by Update_Id DESC)if (@.voucher_status = 'active')
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.-- Insert statements for trigger here
BEGIN
update User_Balance
set Balance = @.last_balance + @.Kredit
where AddVoucher_ID = @.Add_idupdate Voucher
set Sold_Date = @.date
where Voucher_ID = @.voucher_idEND
ELSE
BEGIN
raiserror ('Voucher is not valid',0,1)
rollback transaction
END
go
the problem is the update function is not working and the if statement always put to 'FALSE'
do you think anything wrong with the code
Thats perhaps because of the way you have declared the @.voucher_status parameter. char by default is same as char(1). So your @.voucher_status will only have an "a" if the status was "active". So change your datatype to @.varchar(10).
|||
oh my god...i didn't notice it...just a little mistake there, thanks bro for your help....
it runs smoothly now...
No comments:
Post a Comment