Tenho colunas de preços sensíveis que gostaria de atualizar apenas por meio de um procedimento armazenado. Eu gostaria que todos os códigos ou tentativas manuais de alterar valores nessas colunas de preço falhem se não estiver usando os procedimentos armazenados projetados para atualizá-lo.
Estou pensando em implementar isso usando gatilhos e uma tabela de token. A ideia que estou considerando é ter uma tabela de tokens. os procedimentos armazenados terão que primeiro inserir valores na tabela de tokens. Em seguida, atualize as colunas de preço. O gatilho de atualização verificará se o token existe na tabela de tokens para a linha atualizada. Se encontrado, continuaria. se o token não for encontrado, ele lançará uma exceção e fará com que a transação de atualização falhe.
Existe uma maneira boa/melhor de implementar essa restrição?
O SQL Server permite permissões em nível de coluna. Apenas por exemplo:
Se todos os seus usuários tiverem o mesmo login (ai, BTW), aqui está outra opção
dbo
, você já estará coberto).Os usuários regulares do aplicativo não terão direitos de atualização para essa tabela, portanto, não poderão atualizá-la de outra maneira.