如何仅检测上载文件中的更改

本文关键字:文件 何仅 检测 上载 | 更新日期: 2023-09-27 18:19:10

如果我有一个xml文件(上传到我的服务器),我做一些处理,从它得到数据,然后将这些数据存储在我的数据库中。

如果用户做了一些更改(插入、更新、删除),则再次将文件上传到服务器。是否有任何方法可以检测更改(插入,更新,删除)来更新我的数据库,而不仅仅是删除所有数据并再次插入它们。特别是,有一些数据依赖于现有数据(参考完整性),如果我删除所有数据,依赖项将被删除。(级联删除)! !

<标题>注意:
  • 我存储文件哈希,所以我知道是否发生了一些变化

如何仅检测上载文件中的更改

正如Darin在他的评论中指出的那样,这在很大程度上取决于XML文件和数据库的结构和内容。

目前的原则是删除一定数量的表的一组行,然后(重新)插入另一组行。

如果你只想更新你的数据库,你可以-对于每个表-首先确定你当前要删除的所有行(即做SELECT ... WHERE而不是DELETE ... WHERE),准备一组你要插入的行,并比较这两组(让他们称为 delete insert ):

  • DELETE设置中只有的行必须从数据库
  • 中删除。
  • INSERT设置中只有的行必须插入
  • INSERTDELETE集合中同时存在的行必须被更新。

但是正如前面提到的,执行这些操作的确切方式和顺序取决于您的特定数据结构。例如,如果表之间有依赖关系(即父子关系),则父实体上的删除操作也必须照顾子实体(可能在外键定义中使用ON DELETE CASCADE子句)。在这种情况下,您还应该在处理父表之前处理它们的子表。