如果字段'urejeno'被修改,我有一个更新触发器。
USE [MYDATABASE]
GO
create trigger trg_MyTrigger on dbo.mytable
after update
as
if @@ROWCOUNT = 0
return
set nocount on
if UPDATE (UREJENO)
update mytable
set UREJENO_KDAJ = getdate(),
UREDIL_KDO = USER_NAME()
from mytable S
inner join Inserted I on S.TW_ID = I.TW_ID
但是我想添加条件,以便'urejeno'= True 触发器执行上述操作但是如果条件为“False” 我想将提到的字段设置为NULL。
我必须改变什么?
答案 0 :(得分:0)
您可以在条件的else部分添加另一个更新查询,或者您可以重写更新并直接将位值用作条件。
这应该有效(如果我理解你的意图正确的话)。
CREATE TRIGGER trg_MyTrigger ON dbo.mytable
AFTER UPDATE
AS
IF @@ROWCOUNT = 0
RETURN
SET NOCOUNT ON
IF UPDATE(UREJENO)
BEGIN
UPDATE mytable
SET
UREJENO_KDAJ = CASE WHEN I.UREJENO = 1 THEN GETDATE() ELSE NULL END,
UREDIL_KDO = CASE WHEN I.UREJENO = 1 THEN USER_NAME() ELSE NULL END
FROM mytable S
INNER JOIN Inserted I on S.TW_ID = I.TW_ID
END
GO
如果UREJENO更新为0(false),则会将两个字段设置为null,但UREJENO设置为1(true),然后使用getdate()和user_name()。