создание триггера для обновления данных заказа - PullRequest
0 голосов
/ 29 июля 2010

Я создал триггер в 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?и если да, то почему это не сработает?

1 Ответ

0 голосов
/ 29 июля 2010

Нет, это не так. Нечто, равное NULL, не равно чему-то другому, равному NULL. Это не равно ему.

...