У меня есть чувствительные ценовые столбцы, которые я хотел бы обновить только через хранимую процедуру. Я хотел бы, чтобы все попытки кода или ручного изменения значений в этих ценовых столбцах потерпели неудачу, если он не использует хранимые процедуры, предназначенные для его обновления.
Я рассматриваю реализацию этого с использованием триггеров и таблицы токенов. Идея, которую я рассматриваю, состоит в том, чтобы иметь таблицу токенов. хранимые процедуры должны будут сначала вставить значения в таблицу токенов. Затем обновите столбцы цен. Триггер обновления проверит, существует ли токен в таблице токенов для обновленной строки. Если будет найдено, это будет продолжаться. если токен не найден, он выдаст исключение и сделает транзакцию обновления неудачной.
Есть ли хороший / лучший способ реализовать это ограничение?
Ответы:
SQL Server допускает разрешения на уровне столбцов. Просто для примера:
источник
SampleRole
этим пользователем ...источник
Если все ваши пользователи имеют одинаковый логин (ой, кстати), здесь есть еще один вариант
dbo
, то вы уже охвачены).Обычные пользователи приложения не будут иметь прав на обновление этой таблицы, поэтому они не смогут обновить ее любым другим способом.
источник