【发布时间】:2010-07-29 07:10:14
【问题描述】:
我在 ms sql server 2005 中创建了一个触发器。 触发器应该更新订单数据。 示例:
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)它不起作用并且如果它不是 NULL它确实有效。
那么...如果两者都是NULL,PageParent = @parentid 是否等于 true?
如果是,为什么这不起作用?
【问题讨论】:
标签: sql sql-server-2005 null triggers