Sql server 有没有办法创建一个约束来阻止SQL Server 2012数据库表中的更新?

Sql server 有没有办法创建一个约束来阻止SQL Server 2012数据库表中的更新?,sql-server,constraints,Sql Server,Constraints,我正在创建一个应用程序来跟踪员工的工作时间。理想情况下,人力资源部要求提交数据后不得修改某些表格。这在前端和存储过程中非常容易实现。但是,如果能够通过约束阻止它从服务器本身进入,这样能够访问后端数据的人就不能更改所选表中的任何值,那将是一件好事(除非他们足够狡猾,知道如何禁用约束).使用服务器端安全角色仅授予HR组数据写入权限 如果您信任SQL Server管理员,那么这是可能的。让管理员创建对这些表或架构没有datawriter权限的用户 所以,应用程序会将数据写入数据库,而有权访问这些表的用

我正在创建一个应用程序来跟踪员工的工作时间。理想情况下,人力资源部要求提交数据后不得修改某些表格。这在前端和存储过程中非常容易实现。但是,如果能够通过约束阻止它从服务器本身进入,这样能够访问后端数据的人就不能更改所选表中的任何值,那将是一件好事(除非他们足够狡猾,知道如何禁用约束).

使用服务器端安全角色仅授予HR组数据写入权限

如果您信任SQL Server管理员,那么这是可能的。让管理员创建对这些表或架构没有datawriter权限的用户

所以,应用程序会将数据写入数据库,而有权访问这些表的用户只能读取数据


如果您不希望管理员能够修改不可能的数据。没有办法阻止它,但如果它发生,有办法检测它。查看这篇文章,了解如何在第三方应用程序中实现这一点的详细信息,并查看它是否有帮助

如果每个用户都有自己的服务器登录名,为什么不删除组中的更新/插入/删除权限,然后将每个用户添加到该组中?您应该通过权限/访问限制控制,而不是通过表约束。。。。首先放下那些限制,然后看看你是否需要用其他事情(比如限制…)来覆盖一些角落案例。“权限”是您处理此问题的方式,而不是“约束”。现在,如果有人操纵数据,您可以放置一些跟踪用户id的“审核触发器”。好的。因此,约束不是解决问题的办法。谢谢大家的意见。我将从权限的角度更深入地研究。