我有更新状态列值更改的更新触发器并更新其他表记录,它工作正常。这是我的代码
CREATE TRIGGER [dbo].[trgAfterUpdate] ON [dbo].[recharge_request]
FOR UPDATE
AS
DECLARE @status varchar(50);
SELECT @status=i.status FROM inserted i;
IF UPDATE (status)
BEGIN
IF @status='Failure'
--My Update Statement
ELSE IF @status='Success'
--My Update Statement
END
现在我想为检查状态列值创建一个插入触发器并执行其他表操作。因为在某些情况下状态列值不会更新到我需要在插入时执行某些操作,如果列值为“Success
”或“Fail
”。状态列可能的值为“Success
”,“Fail
”,“Pending
”和“Process
”。任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:0)
DECLARE @status varchar(50); SELECT @status=i.status FROM inserted i;
您没有处理正在更新多行的情况。
您需要将inserted
和deleted
视为可能包含多于一行的表格
IF UPDATE (status)
BEGIN
update t
set ....
from inserted i
inner join some_table t on i.somecol = t.anothercol
where t.status = 'Failure'
update t
set ....
from inserted i
inner join some_table t on i.somecol = t.anothercol
where t.status = 'Success'
. . . . . -- other status value
END
答案 1 :(得分:0)
我的问题已解决,这是解决方案:
CREATE TRIGGER [dbo].[trgAfterInsert] ON [dbo].[recharge_request]
AFTER INSERT
AS
BEGIN
DECLARE @status varchar(50);
SELECT @status=i.status FROM inserted i;
IF @status='Success'
BEGIN
--My Update statement
END
END