Sql-Server

拒絕某些使用者更新某些行

  • May 13, 2020

假設我有一張這樣的桌子:

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 中)。

引用自:https://dba.stackexchange.com/questions/267037