Это хорошее использование для функции COLUMNS_UPDATED () , которая доступна в триггере.
Если обновлен только четвертый столбец, то возвращаемый битовый массив будет выглядеть примерно так:
00001000 00000000 00000000 00000000 ... (binary)
т.е. первый байт имеет значение 8, а остальные равны нулю; если обновляется любой другой столбец, то либо первый байт будет не равен 8, либо один из остальных не будет равен 0.
Функция возвращает varbinary, один бит для каждого столбца. Для 250 столбцов он вернет 32 байта данных (250/8), это означает, что вам нужно будет протестировать каждый байт, т.е.
IF ( (SUBSTRING(COLUMNS_UPDATED(), 1,1) = 8)
AND (SUBSTRING(COLUMNS_UPDATED(), 2,1) = 0)
AND (SUBSTRING(COLUMNS_UPDATED(), 3,1) = 0)
.
.
.
AND (SUBSTRING(COLUMNS_UPDATED(),31,1) = 0)
AND (SUBSTRING(COLUMNS_UPDATED(),32,1) = 0)
)
Это проверяет, что ровно один конкретный столбец был обновлен. Если у вас есть несколько столбцов, которые могут быть обновлены, вам понадобятся побитовые операторы для фильтрации битовой комбинации.