Я создал триггер в MS SQL Server 2005. Триггер должен обновлять данные заказа.Пример:
table
id order
1 1
2 2
3 3
4 4
Обновите, чтобы создать идентификатор 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
), это не работает, и если это не НЕДЕЙСТВИТЕЛЬНО, это работает.
Итак ... PageParent = @parentid
равно true, если обаNULL
?и если да, то почему это не сработает?