Answers:
我看到至少有两种方法可以做到这一点。第一种方法是不授予DELETE
,并UPDATE
在这些一次性写入表,或,对于这个问题,除了从任何特权的特权INSERT
和SELECT
,因此只允许用户插入或从中选择。
另一个选择是在这些表上定义BEFORE UPDATE
和BEFORE DELETE
触发,并使用该SIGNAL
语句在触发主体中引发异常,这将分别阻止更新和删除。
权限似乎是显而易见的选择-但是您也可以使用ARCHIVE存储引擎。该表引擎旨在记录不会更改的大量数据:
ARCHIVE引擎支持INSERT,REPLACE和SELECT,但不支持DELETE或UPDATE。它确实支持ORDER BY操作,BLOB列以及除空间数据类型之外的所有数据(请参见第11.5.1节“空间数据类型”)。ARCHIVE引擎使用行级锁定。
权限的区别在于,具有扩展特权的人仍然可以更改大多数其他表类型上的数据,而ARCHIVE不允许任何人更改表中已经存在的数据。
数据库设计:时间架构中的一个点
在大多数关系数据库实现中。更新和删除命令会销毁发布前的数据。但是,某些系统要求从数据库中物理删除或更新任何信息。在本文中,Arthur Fuller以时间点体系结构的形式提出了针对此要求的解决方案:一种数据库设计,允许用户在不破坏任何先前时间点的情况下重新创建数据库的图像。当前图像。
时态数据库
从Wikipedia,免费的百科全书
Temporal数据库存储与时间实例有关的数据。它提供时间数据类型并存储与过去,现在和将来时间有关的信息。
两者的基本思想是,您要么需要添加数据而不删除它们,要么以某种方式存储数据,以便可以提取当前存在的数据...或以前的日期时间存在的数据。
这里的相关问题: 如何在mysql中创建时间点架构,