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

时间:2011-09-27 23:30:11

标签: sql sql-server-2008 crud

我正在创建一个用于审核用户操作的sql server 2008数据库表。

是否可以创建一个只能插入的数据库表 - 不允许对表中的数据进行截断,删除或更新。我所知道的一个选择是使用权限有限的其他用户,但这不是我的选择。那么看其他选择呢?

2 个答案:

答案 0 :(得分:3)

你需要创建一个触发UPDATE和DELETE的TRIGGER并抛出错误:

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

答案 1 :(得分:1)

另一种方法是为表编写一个触发器创建脚本,并将操作设置为“INSTEAD OF”,它将覆盖某些其他代码或空代码的触发操作(在您的情况下不需要的操作)。 / p>

INSTEAD OF Property 指定执行DML触发器而不是触发SQL语句,因此,覆盖触发语句的操作。

以下是如何为触发器创建编写SQL语句的链接:

http://technet.microsoft.com/en-us/library/ms189799.aspx

祝你好运

  • 阿德里安