[英]What is best way to recover data from database?
我有一个带有“客户”表的数据库。 我目前正在创建一个客户应用程序,管理员应该能够在其中创建/删除等客户。 所以我想要一个安全的,以防你错误地删除了一个客户。 我的问题是,如果客户被删除,恢复客户的最佳方式是什么?
我正在考虑只为已删除的客户提供一张自己的桌子,但不知道是否有其他方法可以实现这一目标。
一种方法是将boolean active
列添加到客户表
create table Customers (
firstname varchar(20),
secondname varchar(20),
active Boolean default true
);
然后当你 select 你的记录
select * from Customers where active = true;
然后,无需从客户表中删除条目,您只需将 active 设置为 false
使用“软删除”。 这意味着您实际上不会删除任何内容,而是在每一行上都有一个标志,您可以切换以显示客户未处于活动状态。 然后,您可以有一个视图,仅显示与取消删除无关的代码可以使用的未删除客户。
您应该进行数据库备份。
备份是您的“第一道防线”——防止意外删除……以及任何其他可能发生的事情(例如,硬盘崩溃。或 meteor 崩溃。)。
另一种方法是将[触发器]分配给任何删除(或者,就此而言,也分配给“插入”和“更新”语句)。 您可以阻止删除(如果您愿意),并且您将记录谁试图删除。
这是一个例子: http://rpbouman.blogspot.com/2011/10/mysql-hacks-preventing-deletion-of.html
最后,最好的方法可能是永远不要删除:只需创建一个新的“状态”列。 将初始值设置为“ACTIVE”,将“deleted”值设置为“DELETED”。
一种方法是不实际删除客户并添加额外的状态列。 在业务层中,您将能够显示所有用户的状态。=已删除。
OBS:如果您确实需要从数据库中删除它们,您可以创建一个 cron 来扫描所有状态为已删除的客户,并在 x 天后将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.