Как пользователь с небольшим опытом или без него, я должен создать триггер на столе (или найти другое решение). Для этого необходимо, чтобы при изменении значения столбца ESB на «1» в другой строке таблицы столбец был установлен на «0».
Я хотел использовать триггер AFTER UPDATE, чтобы сделать это.
ALTER TRIGGER [TR_PHOTO_UPD]
ON [SOA].[dbo].[photos_TEST]
AFTER UPDATE
AS
DECLARE @ID VARCHAR(10)
DECLARE @ESB VARCHAR(1)
SELECT @ID = (SELECT TOP(1) ID
FROM SOA.dbo.photos_TEST
WHERE esb = 'Q'
ORDER BY ARRIVALDATETIME ASC)
SELECT @ESB (SELECT esb FROM INSERTED)
IF @ESB = '1'
UPDATE SOA.dbo.photos_TEST SET esb = '0' WHERE ID = @I
Это, как вы, наверное, понимаете, не работает, как и следующее определение триггера.
ALTER TRIGGER [TR_PHOTO_UPD]
ON [SOA].[dbo].[photos_TEST]
AFTER UPDATE
AS
DECLARE @ID VARCHAR(10)
DECLARE @ESB VARCHAR(1)
SELECT @ID = (SELECT TOP(1) ID
FROM SOA.dbo.photos_TEST
WHERE esb = 'Q'
ORDER BY ARRIVALDATETIME ASC)
SELECT @ESB (SELECT esb FROM INSERTED)
IF @ESB = '1'
BEGIN
UPDATE SOA.dbo.photos_TEST
SET esb = '0'
WHERE id = (SELECT TOP(1) ID
FROM SOA.dbo.photos_TEST
WHERE esb = 'Q'
ORDER BY ARRIVALDATETIME ASC)
END
После нескольких часов поиска в Google и еще не выяснил, почему строка не обновляется до «0». У меня есть подозрение, что UPDATE в триггере AFTER UPDATE является причиной, по которой он не работает. У кого-нибудь есть намеки или лучше решение?
Приветствия
Peter