@ cadrell0 правильный, вы не должны устанавливать переменные в операторе вставки.Вы также не должны устанавливать что-либо для скалярной переменной в триггере.Вставленные и удаленные таблицы могут иметь более одной строки и, следовательно, более одного значения.Вы должны думать с точки зрения наборов для триггеров.
Однако, вот мой процесс разработки триггера и наблюдения за тем, что происходит.
Сначала я выясняю код за пределами триггера (На dev это может означать сброс существующего триггера, пока вы решаете какие-то серьезные изменения).
Итак, я настроил и заполнилвставленные и / или удаленные таблицы как временные таблицы в сценарии (вычеркните фактическую таблицу и измените имя, чтобы сделать это проще).Я обязательно заполняю их несколькими записями (очень важно!) И данными, которые удовлетворят моим тестам.
Затем я пишу код (за исключением части триггера создания) и использую #inserted и / или#deleted временные таблицы в любом месте, которые я бы использовал, вставлены или удалены.Теперь я могу запускать одну часть за раз и видеть результаты по мере необходимости.Я также могу поместить все в транзакцию и откатить ее в конце, чтобы я мог продолжать использовать одни и те же тестовые данные несколько раз, пока не получу правильное определение.
Как только я узнаю, что мой код выполняет то, что я от него хочу, я удаляю транзакции, код временной таблицы и любой тестовый код и глобально заменяю знак # ничем (поэтому теперь называются только триггерные таблицы)вставлен и / или удален).Затем я добавляю код создания триггера и создаю триггер.