J'ai des colonnes de prix sensibles que j'aimerais mettre à jour uniquement via une procédure stockée. J'aimerais que toutes les tentatives de code ou manuelles pour modifier les valeurs de ces colonnes de prix échouent si elles n'utilisent pas les procédures stockées conçues pour le mettre à jour.
J'envisage de l'implémenter à l'aide de déclencheurs et d'une table de jetons. L'idée que j'envisage est d'avoir une table de jetons. les procédures stockées devront d'abord insérer des valeurs dans la table des jetons. Mettez ensuite à jour les colonnes de prix. Le déclencheur de mise à jour vérifiera si le jeton existe dans la table des jetons pour la ligne mise à jour. S'il était trouvé, il continuerait. si le jeton n'est pas trouvé, il lèvera une exception et fera échouer la transaction de mise à jour.
Existe-t-il un bon / meilleur moyen de mettre en œuvre cette restriction?
Réponses:
SQL Server autorise les autorisations au niveau des colonnes. Par exemple:
la source
SampleRole
par cet utilisateur ...la source
Si tous vos utilisateurs ont la même connexion (ouch, BTW) alors voici une autre option
dbo
, alors vous êtes déjà couvert).Les utilisateurs réguliers de l'application n'auront pas de droits de mise à jour sur cette table, ils ne pourront donc pas la mettre à jour d'une autre manière.
la source