防止对数据库表进行更新、删除和截断

发布于 2024-12-07 00:54:05 字数 134 浏览 0 评论 0原文

我正在创建一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

反话 2024-12-14 00:54:05

您需要创建一个在更新和删除时触发并引发错误的触发器:

CREATE TRIGGER user_action_update on UserActions FOR UPDATE, DELETE AS
    BEGIN
        RAISERROR ('Cannot modify or delete user actions', 16, 1)
        ROLLBACK TRAN
        RETURN
    END
GO

来源: 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:

CREATE TRIGGER user_action_update on UserActions FOR UPDATE, DELETE AS
    BEGIN
        RAISERROR ('Cannot modify or delete user actions', 16, 1)
        ROLLBACK TRAN
        RETURN
    END
GO

Source: http://msdn.microsoft.com/en-us/magazine/cc164047.aspx

还给你自由 2024-12-14 00:54:05

另一种方法是为表编写触发器创建脚本并将操作设置为“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

  • Adrian
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文