我有一个用于创建和更新个人信息的Web表单.在保存时,我收集大型多维JSON数组中的所有信息.更新数据库时,信息可能包含三个部分.要创建的新行,需要更新的行和需要删除的行.这些行也将跨越约5个表.
我的问题是,我该如何处理MySQL查询?我最初的想法是DELETE来自所有表格INSERT的所有信息,并一次性清理所有新信息.我想另一种方法是做3个查询:UPDATE所有具有现有ID的查询; DELETE所有标记为删除的内容和INSERT所有新创建的数据(没有现有ID的数据).
哪种方法最好,还是有更好的方法呢?谢谢你的建议.我很感激.
删除所有并插入所有应该从未练习过.
原因:
你需要实现工作单元.我不知道你正在使用哪种语言,但有些语言有内置的支持.在dot-net中我们有DataSet.
基础知识:
如果你编程的语言支持try/catch块,那么在try/catch中执行上述所有步骤(在开始事务之后).在catch块中回滚transcation.
这种方法看起来更复杂,似乎比简单的删除/插入/所有方法引发了更多的查询,但相信我,我们一直在那里,做到了这一点,然后花了几个晚上睡觉,取消所有已完成的工作.永远不要去删除/插入方式,除非你能真正证明它.
关于如何进行更改跟踪的事情,它在很大程度上取决于您使用的语言和应用程序类型.即使对于dot-net,这种方法也因桌面应用程序和Web应用程序而异.跟踪删除很容易.以便跟踪新插入.通过在该字段的任何列上捕获edit事件来应用更新标记.
数据大约有五个表.因此,三个循环(删除/更新/插入)必须完成五次,每个表一个.首先绘制表格之间的关系.首先处理顶级表格.然后处理直接连接到顶级表的表,依此类推.如果表之间存在循环关系,则必须特别小心.
针对Save操作的代码即将增长很长时间.5x3 = 15个操作,每个操作都有自己的sql.预计这些操作都不可重复使用,因此将它们放在单独的方法中是徒劳的.一切都将在一个大的程序块中进行.因此虔诚地评论代码.标记表边界和操作.