【发布时间】:2012-01-25 18:11:20
【问题描述】:
我正在开发一个支持 SQLite 的数据库查询抽象层。
不幸的是,SQLite 不支持 DELETE(和 UPDATE 等)查询中的 LIMIT 子句 - 除非在较新的版本中使用特殊标志编译。
那么有没有我可以实施的解决方法,以便仍然可以支持该查询类型?
【问题讨论】:
我正在开发一个支持 SQLite 的数据库查询抽象层。
不幸的是,SQLite 不支持 DELETE(和 UPDATE 等)查询中的 LIMIT 子句 - 除非在较新的版本中使用特殊标志编译。
那么有没有我可以实施的解决方法,以便仍然可以支持该查询类型?
【问题讨论】:
虽然 LIMIT 在您的 SQLite 构建中没有天生支持,但您可以通过实现一种在子查询中使用 LIMIT 选择来识别将被更新或删除的行的方法来重现该行为。您应该知道,与使用启用了 LIMIT 的 SQLite 构建相比,这会导致性能下降,但如果您需要该功能,这似乎是一个可行的选择。
如果您正在处理大量数据,或者发现尝试这样做对性能的影响过于严重,那么另一个选择是使用 LIMIT 选择来填充临时表,然后作为您的一部分加入该表删除或更新。
【讨论】: