这是我的(进行中)触发器。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