Mam wrażliwe kolumny cen, które chciałbym zaktualizować tylko za pomocą procedury składowanej. Chciałbym, aby wszystkie próby zmiany kodu w tych kolumnach cenowych lub ręczne próby zakończyły się niepowodzeniem, jeśli nie używa procedur przechowywanych zaprojektowanych do jego aktualizacji.
Rozważam wdrożenie tego przy użyciu wyzwalaczy i tabeli tokenów. Rozważam pomysł posiadania tabeli żetonów. procedury składowane będą musiały najpierw wstawić wartości do tabeli tokenów. Następnie zaktualizuj kolumny cen. Wyzwalacz aktualizacji sprawdzi, czy token istnieje w tabeli tokenów dla zaktualizowanego wiersza. Jeśli zostanie znaleziony, będzie kontynuowany. jeśli token nie zostanie znaleziony, wygeneruje wyjątek i spowoduje niepowodzenie transakcji aktualizacji.
Czy istnieje dobry / lepszy sposób na wdrożenie tego ograniczenia?
Odpowiedzi:
SQL Server pozwala na uprawnienia na poziomie kolumny. Na przykład:
źródło
SampleRole
tego użytkownika ...źródło
Jeśli wszyscy użytkownicy mają ten sam login (ouch, BTW), oto inna opcja
dbo
, to jesteś już objęty).Zwykłym użytkownikom aplikacji brakuje uprawnień do aktualizacji tej tabeli, więc nie będą mogli jej zaktualizować w żaden inny sposób.
źródło