防止对数据库表进行更新、删除和截断
我正在创建一个 sql server 2008 数据库表来审核用户操作。
是否可以创建一个只能插入的数据库表 - 不允许对表中的数据进行截断、删除或更新。我知道的一种选择是使用具有有限权限的不同用户,但这不适合我。那么正在考虑其他选择吗?
I am in the process of creating a sql server 2008 database table for auditing users actions.
Is it possible to create a database table which can only inserted in to - no truncates, deletes or updates allowed on the data in the table. One option I know of is to use a different user with limited rights, but this isnt option for me. So looking at other options?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要创建一个在更新和删除时触发并引发错误的触发器:
来源: http://msdn.microsoft.com/en-us/magazine/cc164047.aspx
You need to create a TRIGGER that fires on UPDATE and DELETE and throws an error:
Source: http://msdn.microsoft.com/en-us/magazine/cc164047.aspx
另一种方法是为表编写触发器创建脚本并将操作设置为“INSTEAD OF”,这将覆盖某些其他代码或空代码的触发操作(在您的情况下是不需要的操作)。
代替财产
指定执行 DML 触发器而不是触发 SQL 语句,因此覆盖触发语句的操作。
以下是如何编写用于创建触发器的 SQL 语句的链接:
http: //technet.microsoft.com/en-us/library/ms189799.aspx
好运
Another way to do that is to Write a trigger creation script for the table and set the action to " INSTEAD OF " which will override the triggering action (unwanted action in your case ) for some other code, or null code.
INSTEAD OF Property
Specifies that the DML trigger is executed instead of the triggering SQL statement, therefore, overriding the actions of the triggering statements.
Here is a link in how to Write the SQL statement for the trigger creation:
http://technet.microsoft.com/en-us/library/ms189799.aspx
Good luck