這是我的(進行中)觸發器。SQL問題觸發舊值和新值
ALTER TRIGGER [dbo].[trgInsertUpdate]
ON [dbo].[joinreason]
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @jr_active AS char(1), @jrid AS int;
SELECT @jr_active = (SELECT jr_active FROM INSERTED)
SELECT @jrid = (SELECT jrid FROM INSERTED)
IF UPDATE(jr_active)
BEGIN
IF (jr_active = 'N')
BEGIN
UPDATE joinreason
SET jr_active = 'N' where jr_par_jrid = jrid;
END
END
END
jr_active列是'Y'或'N'。 業務需求是:
當記錄沒有jr_par_id時,它被認爲是父項。
當記錄有jr_par_id時,它被認爲是孩子。
- ==父
當父母的jr_active列從 'Y' 改爲 'N' 的jrid孩子的jr_par_id:
- 所有的孩子都應該更新在jr_active列中爲'N'
我無法理解如何引用舊值(更新後更改的值)和新值(即將要更新的值)。
任何人都可以看到我要去哪裏錯了嗎?
使用SQL Server 2008
請記住,觸發設置爲基礎的:如果你想測試我的測試代碼可以在這裏找到
!當'joinreason'中更新多行時,您現在的代碼將無法正常運行。 – NickyvV 2015-03-13 14:26:27
在給定的時間內不會更新一行。 – Curly5115 2015-03-13 14:27:49
如果插入了多行,那麼觸發器將拋出錯誤。 – 2015-03-13 14:29:37