Есть ли способ, с помощью триггера или какого-либо другого средства, гарантировать, что определенное поле всегда задано явно при обновлении строки, даже при запуске специального SQL через SQL Server Management Studio? В частности, все наши таблицы имеют поля change_note, и мы всегда хотим, чтобы это поле устанавливалось для каждого обновления. Вещи, которые мы рассмотрели и выбросили:
Установите для change_note значение NOT NULL. Мы делаем это, но это не помогает. Как только change_note имеет начальное значение, вы можете запустить столько операторов UPDATE, сколько захотите, но забудьте обновить change_note, и NOT NULL останется довольным, потому что предыдущее значение все еще находится в change_note.
Используйте триггер, чтобы сравнить старую версию change_note с новым значением change_note. Иногда вы хотите, чтобы change_note было таким же, как было ранее. Мы не хотим гарантировать, что change_note изменяется, мы хотим гарантировать, что значение для него явно указывается в любом обновлении.
Запретите разрешения для запуска специального SQL и заставьте всех обновлять данные только через наш API хранимых процедур, и сделайте change_note обязательным параметром для всех SP, которые обновляют соответствующие таблицы. У нас слишком много специальных запросов для этого.
Тупик! Есть идеи?
Спасибо!