Sql阻止行被修改

时间:2010-05-26 20:32:37

标签: sql-server-2005

是否可以阻止对sql中的行进行任何更改?

假设记录已创建。但是一旦它被创建,我就不希望记录被修改过。

因此,用户仍然可以尝试执行更新表set column = value ..但这会引发错误,导致无法对其进行修改。

3 个答案:

答案 0 :(得分:3)

是的,你可以使用触发器,只要用户不做这样的事情

alter table disable trigger
update table...

您也可以拒绝对该列进行更新(SQL Server 2005及更高语法)

DENY UPDATE ON OBJECT::TableName(ColumnName) TO UserNAme;

答案 1 :(得分:2)

你应该在桌子上放一个触发器。

触发器可以用旧值替换任何新值,静默拒绝更新,也可以向用户抛出异常,说不允许更新。

OR

您可以为用户分配INSERT权限,但不能为UPDATE权限分配。

答案 2 :(得分:1)

如果SQL服务器允许这种细粒度的访问控制,最简单的方法是REVOKE UPDATE ON TABLE。

请注意,恶意用户仍然可以删除,然后插入另一个“已更改”记录。