Что-то странное происходит с одним из моих триггеров. Я построил триггер, который проверяет, пытается ли пользователь UPDATE
или DELETE
строка в таблице с [Released_Flag] = 'Y'
, и откатывает транзакцию, если это так. Однако, если пользователь пытается обновить поле Released_Flag с 'N' до 'Y' для строки, он все равно возвращает ошибку.
Мой триггер:
CREATE TRIGGER [dbo].[Prevent_Delete] ON [dbo].[Data_Test]
AFTER DELETE, UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE @Release_Flag char(1)
SELECT @Release_Flag = [Release_Flag] FROM deleted
IF @Release_Flag='Y'
BEGIN
RAISERROR('Cannot update or delete a RELEASED variable.',16,1)
ROLLBACK
END
END
выше вызывает некоторые проблемы в UPDATE
заявлениях. Иногда возникает ошибка, даже если обновляемая строка имеет Release_Flag = 'N'. Любая идея, почему это может происходить?
Я также использовал SELECT * FROM [deleted]
в триггере, чтобы увидеть, что происходит, и некоторые строки показывают Release_Flag = 'Y' в таблице [deleted]
, несмотря на то, что они на самом деле 'N'.