如何仅检测上载文件中的更改
本文关键字:文件 何仅 检测 上载 | 更新日期: 2023-09-27 18:19:10
如果我有一个xml
文件(上传到我的服务器),我做一些处理,从它得到数据,然后将这些数据存储在我的数据库中。
如果用户做了一些更改(插入、更新、删除),则再次将文件上传到服务器。是否有任何方法可以检测更改(插入,更新,删除)来更新我的数据库,而不仅仅是删除所有数据并再次插入它们。特别是,有一些数据依赖于现有数据(参考完整性),如果我删除所有数据,依赖项将被删除。(级联删除)! !
<标题>注意:- 我存储文件哈希,所以我知道是否发生了一些变化
正如Darin在他的评论中指出的那样,这在很大程度上取决于XML文件和数据库的结构和内容。
目前的原则是删除一定数量的表的一组行,然后(重新)插入另一组行。
如果你只想更新你的数据库,你可以-对于每个表-首先确定你当前要删除的所有行(即做SELECT ... WHERE
而不是DELETE ... WHERE
),准备一组你要插入的行,并比较这两组(让他们称为 delete 和 insert ):
- DELETE设置中只有的行必须从数据库 中删除。
- INSERT设置中只有的行必须插入
- 在INSERT和DELETE集合中同时存在的行必须被更新。
但是正如前面提到的,执行这些操作的确切方式和顺序取决于您的特定数据结构。例如,如果表之间有依赖关系(即父子关系),则父实体上的删除操作也必须照顾子实体(可能在外键定义中使用ON DELETE CASCADE
子句)。在这种情况下,您还应该在处理父表之前处理它们的子表。