2010-05-26 83 views
1

是否有可能阻止任何更改在SQL中的行?Sql阻止行被修改

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

所以用户仍然可以尝试做一个更新表设置column = value ..但是这会引发一个错误,阻止它被修改。

回答

3

是的,你可以与提供的用户不会做这样的事情

alter table disable trigger 
update table... 

,你也可以拒绝更新该列像这样的(SQL Server 2005和向上语法)

触发做
DENY UPDATE ON OBJECT::TableName(ColumnName) TO UserNAme; 
2

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

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

OR

您可以将权限分配给用户,但不是UPDATE权限。

+0

当然,如果您使用了存储过程并且没有更新过程,并且用户没有对该表的直接访问权限,那么他们无法更新该记录,因为没有方法可供他们使用。 并确保编写触发器来处理多个记录更新 – HLGEM 2010-05-26 20:38:55

1

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

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