java - 在真实mysql系统中处理DELETE的最佳方法

标签 java mysql spring server

我正在使用 Spring Boot + mySql 开发一个 Web 项目

我正在考虑如何从数据库中删除数据。

我知道 DELETE * FROM table 语句,但我有疑问,

  1. 有什么方法可以使用 DELETE 保留历史记录或操作日志吗?
  2. 如果我使用DELETE删除数据,然后添加一个新数据,新数据会插入到删除的位置,所以id的顺序是错误的,对吧?

我的 friend 建议我在每个表中添加一个BOOL列,即删除标志,以控制删除过程,这是一个很好的方法吗?

抱歉,我是服务器开发的新手,所以我想确保每个步骤都是稳健的。预先感谢您。

最佳答案

Is there any way to keep the history or operation logs using DELETE?

您可以通过在日志文件中跟踪这些操作或在数据库上放置触发器来跟踪每个删除(例如,将在新表中创建新记录)来做到这一点。就我个人而言,我更喜欢使用日志文件,这样你就可以以多种类型配置日志框架(或通过保存在数据库上,或在日志文件中或通过使用系统日志等...)

If I delete the data using DELETE, then I add a new one, the new data will insert into the place that was deleted, so the id is mis-ordered right?

没有;新记录将有自己的 ID

My friend suggest me to add a BOOL column to each table, which is delete flag, in order to control the delete process, is it a nice way to do so?

在这种情况下,您执行的不是真正的删除,而是逻辑删除;该记录并未从数据库中物理删除,但被标记为已删除。这会影响所有其他查询(例如,您必须选择删除标志为 false 的所有记录,因为删除标志为 true 的记录将被“删除”) 这对于存储所有更改很有用,但您还必须考虑表维度...记录将始终被添加并且永远不会真正删除...

就我个人而言,我会通过使用日志文件并删除记录来移动

希望这能有所帮助

安杰洛

关于java - 在真实mysql系统中处理DELETE的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41550743/

相关文章:

java - Spring3/Hibernate断言失败

java - Spring Data Neo4j 未能通过 junit 测试设置

java - 静态 block java中的常量问题

java - Hibernate 给出 'table is not mapped' 异常

java - Spring AutoPopulatingList 最大尺寸?

mysql - RMySQL - 从列表中存在值的数据库中选择数据

mysql - 从具有相同列的两个表的并集中选择所有行

MySQL 'Truncated incorrect INTEGER value'

java - 我可以在返回 Mono 的方法上使用带有条件的 Spring 缓存抽象吗?

java - 如何找到并停止所有当前正在运行的线程?