如何设计一个不变的仅追加数据库?

时间:2019-04-11 14:56:33

标签: sql database database-design

对于一个项目,我需要实现一个不可变并且仅允许新条目的数据库。 在任何情况下都不能编辑或删除条目。

我正在考虑一个仅允许管理员编辑和删除的数据库(仅限我自己)。但是,我不确定这是否100%安全,或者是否有可能非法获得管理员权限并伪造数据。因此,最好的解决方案是拥有一个首先不提供编辑或删除功能的数据库。

建议表示赞赏!谢谢

2 个答案:

答案 0 :(得分:0)

PostgreSQL自9.5起支持Row Security Policies,该版本使您可以根据用户和/或表中的某些字段值定义选择,插入,删除和更新策略。您可能会在这里找到要搜索的内容。

答案 1 :(得分:0)

最简单的方法是向用户授予对INSERT/UPDATE/DELETE的分离权限,但是对于某些业务规则来说可能不够。但是,许多DBMS(例如SQL Server)都支持INSTEAD OF triggers,它可以悄悄地绕过任何DELETE/UPDATE并处理INSERT,具体取决于您在触发器代码中实现的自定义条件。

您还可以定义一个具有INSTEAD OF触发器的可更新视图,以仅用于插入数据。