我在ms sql server 2005中创建了一个触发器。 触发器应该更新orderdata。 例如:
table
id order
1 1
2 2
3 3
4 4
更新,以便id 4具有订单2将创建。
table
id order
1 1
2 2
3 3
4 2
使用我的触发器,在此之后它会自动创建。
table
id order
1 1
2 3
3 4
4 2
我的表显然看起来不同,但这不应该太重要,我的触发器看起来像这样。
ALTER TRIGGER [dbo].[testtrigger] ON [dbo].[pages] AFTER UPDATE, INSERT AS
DECLARE @ordernr numeric(18, 0)
DECLARE @parentid numeric(18, 0)
DECLARE @thisid numeric(18, 0)
SET @ordernr = (SELECT TOP 1 pageOrder FROM Inserted)
SET @parentid = (SELECT TOP 1 pageParent FROM Inserted)
SET @thisid = (SELECT TOP 1 pageId FROM Inserted)
IF EXISTS (SELECT pageOrder FROM dbo.pages WHERE PageParent = @parentid AND pageOrder = @ordernr)
BEGIN
UPDATE dbo.pages
SET pageOrder=@ordernr + 1
WHERE pageOrder=@ordernr
AND PageId != @thisid
AND PageParent=@parentid
END
在表格中,几个页面具有相同的父级,因此我需要命令将它们保持在正确的位置,但是如果页面位于顶部(也称为pageParent= NULL
),则它不起作用,如果它不是t NULL它确实有效。
所以... PageParent = @parentid
如果两者都是NULL
,那么它们是否相等?
如果是的话,为什么这不起作用?
答案 0 :(得分:0)
不,它没有。 NULL的东西不等于NULL的其他东西。它也不等于它。