Sql-Server
拒絕某些使用者更新某些行
假設我有一張這樣的桌子:
canModify | name | age ------------------------ 1 | John | 24 0 | Nick | 21
我只想在 canModify=1 的情況下向特定使用者授予更新訪問權限
我知道有列級安全性,例如:
DENY UPDATE ON Table(column) TO user;
但我找不到類似的東西:
DENY UPDATE ON Table To user WHERE Table.canModify = 1
是否有觸發器或我可以設置的東西來做到這一點?
您可以使用以下內容創建視圖:
create view MyView as select * from YourTable where CanModify =1
然後,您可以為使用者授予對視圖的插入、更新、刪除、選擇(適當的權限)。
有了這個,他將只能更新“canModify”=1的行
如果他需要能夠讀取所有行,那麼您可以僅在表本身上授予選擇權限並僅在視圖上授予更新權限。
如果您想在應用程序中執行此操作,則可能需要修改程式碼(但如果是這種情況,那麼您應該將此邏輯放在應用程式碼中而不是 SQL 中)。