выполняет некоторые упражнения MSSQL, и я пытаюсь создать триггер.Тем не менее, решение, которое я имею, кажется мне теоретически правильным, но оно не работает.
Цель состоит в том, чтобы создать триггер для таблицы, которая имеет только два столбца.Один столбец является первичным ключом и является идентификатором и не допускает нулевые значения.Другой столбец разрешает значения NULL.Тем не менее, он допускает значения NULL ТОЛЬКО ДЛЯ ОДНОЙ СТРОКИ во всей таблице.По сути, триггер должен срабатывать для операции вставки / обновления в этой таблице, которая пытается вставить / обновить столбец до значения NULL, если для столбца в таблице уже существует значение NULL.
Это условие я фиксирую в своем коде триггера следующим образом:
After Insert, Update
AS
set ANSI_WARNINGS OFF
If ( (select count(NoDupName) from TestUniqueNulls where NoDupName is null) > 1 )
BEGIN
Print 'There already is a row that contains a NULL value, transaction aborted';
ROLLBACK TRAN
END
Тем не менее транзакция выполняется сама по себе.Я не уверен, почему это происходит, и триггер не срабатывает сам по себе.
Так, кто-нибудь, чтобы просветить мои опасения здесь?
Я также использовал set ANSI_WARNINGS OFF в начале триггера.