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