T-SQL约束以确保表仅附加

时间:2017-11-28 16:13:24

标签: sql-server tsql immutability

我想在我的SQL Server数据库中为表使用仅附加模型,并且正在寻找一种强制执行此用法的方法。我希望有一个限制,我可以添加到表格,不允许更新,但无法找到这些行。

我可以通过表级权限拒绝SQL用户的更新权限,但我不能保证另一个SQL用户无法更新该表。

DENY DELETE ON [dbo].[append_only] TO [public]
DENY UPDATE ON [dbo].[append_only] TO [public]

触发器可以完成这项工作,但我多年来一直避免这些因为我认为它们不容易被发现。

我还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

可以定义触发器,以便在任何SQL用户尝试和更新或删除时抛出错误。

create table append_only (
    id int identity primary key,
    val nvarchar(50)
)

create or alter trigger append_only_monitor
on append_only
instead of update, delete
as throw 51000, 'This table is meant to be append-only.', 1;