【问题标题】:How can I disable update table for all user如何禁用所有用户的更新表
【发布时间】:2025-12-24 14:00:12
【问题描述】:

我使用 SQL Server 2008 R2 并且有一张我不希望任何人更新的表,换句话说,我想禁用此表上的更新。为此,我知道两种方法,第一种是使用instead of update 触发器来阻止更新,第二种是使用权限。

我想为此找出最佳实践。

编辑 1: 我想拒绝所有用户的更新。

【问题讨论】:

  • 为什么,为什么,你会使用触发器来模拟 SQL Server 免费提供给你的东西?
  • 有时管理员忘记了表不可更新。当我使用触发器时,没有人可以更新此表。当然管理员可以禁用触发器,但禁用触发器是有意识的。
  • 所以你试图解决一个引入技术问题的组织问题?
  • 有些时候,数据非常重要,永远不必改变这些。即使是管理员。

标签: sql-server sql-server-2008 sql-server-2008-r2


【解决方案1】:

恕我直言,使用权限来禁用对表的更新可能是最好的方法。

编辑:Check Giving and removing permissions in SQL Server

【讨论】:

  • 我知道,不是更新是为了重定向,但我可以在每次更新的触发器中引发错误。
  • 我如何拒绝所有用户的更新权限(每次使用都拒绝权限,或者可以拒绝所有人)。
  • 你可以使用下面一行DENY UPDATE on SCHEMA::table TO user
  • @Habib.OSU,我不明白。可以更多的帮助我。我想DENY UPDATE for all user没有DENY UPDATE on all table to single user
  • @Habib.OSU 我检查了上面的链接。但我想拒绝所有用户的权限。在您的链接中,当我定义新用户时,必须拒绝新定义用户的更新权限。并且可能会忘记它。
【解决方案2】:

在 MySQL 中,SQL i-am-a-dummy 标志使 MySQL,SQL 引擎拒绝 UPDATE and DELETE 命令,除非存在 WHERE 子句。

【讨论】: