为了账号安全,请及时绑定邮箱和手机立即绑定

从数据库恢复数据的最佳方法是什么?

从数据库恢复数据的最佳方法是什么?

米脂 2024-01-17 16:38:49
我有一个包含表“客户”的数据库。我目前正在创建一个客户应用程序,管理员应该能够在其中创建/删除等客户。所以我想要一个安全装置,以防万一您错误地删除了客户。我的问题是,如果客户被删除,恢复客户的最佳方法是什么?我想为已删除的客户建立一个自己的表,但不知道是否有其他方法可以实现这一点。
查看完整描述

5 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

boolean active一种方法是向您的客户表添加一列


create table Customers (

  firstname varchar(20),

  secondname varchar(20),

  active Boolean default true

);

然后当您选择记录时


select * from Customers where active = true;

然后,您可以将 active 设置为 false,而不是从客户表中删除条目


查看完整回答
反对 回复 2024-01-17
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

使用“软删除”。这意味着您实际上不会删除任何内容,而是在每一行上都有一个标志,您可以切换以显示客户不活跃。然后,您可以拥有一个仅显示与取消删除无关的代码可以使用的未删除客户的视图。



查看完整回答
反对 回复 2024-01-17
?
烙印99

TA贡献1829条经验 获得超13个赞

一种方法是不实际删除客户并添加额外的状态列。在业务层中,您将能够显示状态为 != DELETED 的所有用户。

OBS:如果您确实需要从数据库中删除它们,您可以创建一个 cron 来扫描所有状态为已删除的客户,并在 x 天后删除它们。


查看完整回答
反对 回复 2024-01-17
?
弑天下

TA贡献1818条经验 获得超8个赞

我还想补充一点,您可以考虑使用Hibernate Envers。

Envers 将创建新表来记录审核表的更改状态。


查看完整回答
反对 回复 2024-01-17
?
慕慕森

TA贡献1856条经验 获得超17个赞

  1. 您应该进行数据库备份。

    备份是您的“第一道防线” - 防止意外删除......以及防止任何其他可能发生的情况(例如硬盘崩溃。或流星坠毁。)。

  2. 另一种方法是将[触发器]分配给任何删除(或者就此而言,也分配给“插入”和“更新”语句)。您可以阻止删除(如果您愿意),并且您将获得谁尝试删除的记录。

  3. 最后,最好的方法可能是根本不删除:只需创建一个新的“状态”列。将初始值设置为“ACTIVE”,将“deleted”值设置为“DELETED”。


查看完整回答
反对 回复 2024-01-17
  • 5 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信