如何锁定表以便用户无法对其执行插入,更新,删除操作(仅限触发器可以)

时间:2015-09-17 10:43:12

标签: sql sql-server permissions

所以我的表格如下所示

CREATE TABLE [dbo].[Test]
(
    [Id] INT NOT NULL,
    [CommaSeperatedString] nvarchar(Max) NOT NULL, 
    CONSTRAINT [PK_Test] PRIMARY KEY ([Id]) 
)

我希望锁定此表,以便只能通过触发器进行更新。

即。我不希望用户能够运行

  
      
  • 插入
  •   
  • 更新
  •   
  • 删除
  •   

反对这张桌子。它可能只是通过我设置的一些触发器更新。

这可能吗?

3 个答案:

答案 0 :(得分:2)

这里 INSTEAD OF Triggers 就好了。

您可以为RewriteRule ^(photo|videos?|quote|post|author|...)/([^/]+)/.+$ /$1.php?slug=$2 [L] RewriteRule ^(blog|check-ins|videos|photos|...)/$ $1.php [L] INSTEAD OF INSERT创建触发器,也可以为删除创建触发器。

INSTEAD OF UPDATE

答案 1 :(得分:1)

在管理工作室中,您可以转到用户角色 - >属性 - >安全对象。

在此处添加表格,您可以拒绝表格的权利。 拒绝否决任何允许权利。因此,即使用户有另一个允许的角色,它仍将被拒绝权利。

更多信息:Understanding GRANT, DENY, and REVOKE in SQL Server

编辑:如果您的触发器在同一个表上,请使用而不是触发器,就像其他答案所说的那样。否则使用权利。

答案 2 :(得分:1)

是的,使用代替触发器,我们可以有条件地阻止其他人使用CURD操作。但我们也可以完全从某些用户那里批准或拒绝这项操作。为此我们使用像

这样的命令
GRANT - gives a user permission to perform certain tasks on database objects
DENY - denies any access to a user to perform certain tasks on database objects
REVOKE - removes a grant or deny permission from a user on certain database objects

请参阅此网站

https://www.mssqltips.com/sqlservertip/1138/giving-and-removing-permissions-in-sql-server/

https://www.mssqltips.com/sqlservertip/1851/prevent-accidental-update-or-delete-commands-of-all-rows-in-a-sql-server-table/

所有最好的.....