【发布时间】:2012-02-13 11:34:31
【问题描述】:
这个想法是,在循环提交表单之后,所有不只是由表单更新的行都会从数据库中删除。
是否有类似的优雅 MySQL 声明?
【问题讨论】:
-
一种选择是,在事务中,先发制人地删除所有行,然后从表单中插入“更新”的行。
这个想法是,在循环提交表单之后,所有不只是由表单更新的行都会从数据库中删除。
是否有类似的优雅 MySQL 声明?
【问题讨论】:
事先删除是危险的;如果用户关闭浏览器怎么办?辅助存储主键是一种选择。最简单的结果是这样的:
1) 将所有匹配的行日期设置为 1970 年 1 月 1 日。 2) 提交表格,包括更新行中的当前时间。 3) 删除所有具有旧日期的行。
效果很好。
【讨论】:
相反的情况如何?
更新 tbl 设置 this = that where col = 'something'; 从 tbl 中删除 col != 'something';
【讨论】:
您可以在表中有一个时间戳列。所有更新的行都将具有当前时间戳。然后您可以运行删除查询,选择时间戳小于更新表时的大致时间的所有行。虽然不是一个完整的解决方案。
另一种方法是在更新时设置一些列值,然后删除列值未更新的行
【讨论】:
没有。存储 PK 并在删除后使用 NOT IN。
【讨论】: