【发布时间】:2023-04-08 08:48:01
【问题描述】:
我的 SQLite 版本不支持 IF EXISTS 运算符。如何删除一个可能存在也可能不存在的表而不给我一个错误?
我现在无法在实时应用程序上更新版本,因此我无法使用支持IF EXISTS 的 SQLite 版本。
【问题讨论】:
我的 SQLite 版本不支持 IF EXISTS 运算符。如何删除一个可能存在也可能不存在的表而不给我一个错误?
我现在无法在实时应用程序上更新版本,因此我无法使用支持IF EXISTS 的 SQLite 版本。
【问题讨论】:
你可以使用:
DROP TABLE IF EXISTS TABLE_NAME;
【讨论】:
official documentation 说要使用 IF EXISTS,所以我怀疑你最好的计划是升级。
如果不能,则需要看看是否可以对表进行一些琐碎的操作,无论表是否为空,都会成功;如果成功,您应该删除该表,如果失败,则该表已经消失。可以尝试的操作类型的示例可能是:
SELECT COUNT(*) FROM theTable;
请注意,您需要在语言级别捕获可能的错误,并且您可能希望将整个批次(探测、错误陷阱、删除表)包装在事务中。当然,如果您要进行错误处理,另一种方法是直接删除表并处理错误。
【讨论】:
就用这个吧。
DROP TABLE TABLE_NAME;
【讨论】:
DROP TABLE IF EXISTS,这是最好的选择。抓住错误,分析它并继续。
您可以以某种方式在查询中使用元数据表来确定该表是否存在:
SELECT count(*) > 0 FROM sqlite_master where tbl_name = "<table_name>" and type="table"
【讨论】: