0
我在T-SQL中相当新,但我有一个关于触发器的问题。我写了一个触发器,用于存储过程中插入和更新数据。T-SQL触发器插入更新
现在,当任何行表更新[dbo].[users]
我不知道该怎么这样,如果数据被插入到表[dbo].[users]
激活触发器修改此触发器(这个工程现在)触发的工作原理,但如何在相同的触发器上实现更新方案,以便只有在[dbo].[users]
表中只有特定的行被更新时才会激活触发器。
例如
如果新用户在插入所有行插入此表 - 激活触发器
如果旧的触发器被更新,但只有在这个表中的特定字段更新(working_state是列的名称),那么只有触发器应该被激活。
的源代码是什么我已经在这里显示:
ALTER TRIGGER [dbo].[t_temp_triger_name]
ON [dbo].[users]
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
DECLARE @working_state char(1),
@user_code char(11)
DECLARE zm CURSOR FOR
SELECT
working_state,
user_code
FROM
inserted
-- Added update statement that activates the trigger only when a specific -
-- column update is executed
UPDATE [dbo].[users]
SET working_state = 1
FROM [dbo].[users] U
INNER JOIN DELETED D ON U.user_code= D.user_code
WHERE U.working_state<> D.working_state
OPEN zm
FETCH NEXT FROM zm INTO @working_state, @user_code
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC [FNF].[dbo].[NamedProcedure]
@working_state, @user_code
FETCH NEXT FROM zm INTO @working_state, @user_code
END
CLOSE zm
DEALLOCATE zm
END
是否有可能实现这一目标只用1个触发? – dmxyler