如果我有一个xml
文件(上传到我的服务器),并且我对其进行了一些处理以从中获取数据,那么将这些数据存储在我的数据库中。
如果用户进行了一些更改(插入,更新,删除),则将文件再次上传到我的服务器。有没有办法检测更改(插入,更新,删除)来更新我的数据库,而不仅仅是删除所有数据并再次插入它们。特别是,有一些数据取决于现有数据(参照完整性)和如果我删除所有数据,将删除家属。(级联删除)!!
答案 0 :(得分:3)
Darin在评论中指出,这在很大程度上取决于XML文件和数据库的结构和内容。
原则上,您当前删除了一定数量的表中的一组行,然后(重新)插入另一组行。
如果您只想更新数据库,可以 - 对于每个表 - 首先标识您当前要删除的所有行(即执行SELECT ... WHERE
而不是DELETE ... WHERE
),准备一组您要插入的行并比较这两个集合(让我们称之为 DELETE 和 INSERT ):
但如上所述,执行这些操作的方式和顺序取决于您的具体数据结构。例如。如果表之间存在依赖关系(即父子关系),则父实体上的删除操作也必须处理子项(可能在外键定义中使用ON DELETE CASCADE
子句)。在这种情况下,您还应该为子表处理父表。