Похоже, ваша основная проблема заключается в том, что существует разница между @foo = NULL
и @foo IS NULL
:
declare @i int
set @i = null -- redundant, but explicit
if @i = null print 'equals'
if @i is null print 'is'
Оператор PRINT «Это должно работать» не работает, потому что объединение NULL сСтрока дает значение NULL, а PRINT NULL
ничего не печатает.
Что касается фактической установки значения @salerepid, то, скорее всего, вставленная и / или удаленная таблица фактически пуста.Какие утверждения вы используете для проверки триггера?И распечатали ли вы значение COUNT (*)?
Вам также следует подумать (если вы этого еще не сделали), что произойдет, если кто-то изменит более одной строки одновременно.Ваш текущий код предполагает, что за один раз изменяется только одна строка, что может быть разумным допущением в вашей среде, но он может легко сломаться, если кто-то массово загружает данные или выполняет другую «пакетную обработку».
Наконец,Вы всегда должны указывать свою версию и версию MSSQL;это может быть актуально для некоторых вопросов синтаксиса.