当不支持IF EXISTS运算符时,删除SQLite中的现有表

时间:2010-09-09 08:43:00

标签: sql database sqlite

我的SQLite版本不支持IF EXISTS运算符。如何在没有误报我的情况下放下可能存在或可能不存在的表格?

我现在无法更新实时应用程序的版本,因此我无法使用支持IF EXISTS的SQLite版本。

4 个答案:

答案 0 :(得分:111)

您可以使用:

DROP TABLE IF EXISTS TABLE_NAME;

答案 1 :(得分:22)

official documentation表示使用IF EXISTS,所以我怀疑你的最佳计划是升级。

如果你不能,你需要看看你是否可以对表进行一些微不足道的操作,无论表是否为空都会成功;如果成功则应该删除该表,如果失败则表已经消失。要尝试的操作类型的示例可能是:

SELECT COUNT(*) FROM theTable;

请注意,您需要在语言级别捕获可能的错误,并且您可能希望将整个批次(探测,错误陷阱,丢弃表)包装在事务中。当然,如果您正在进行错误处理,另一种方法是删除表并处理错误。

答案 2 :(得分:5)

请使用此功能。

DROP TABLE TABLE_NAME;

答案 3 :(得分:3)

您可以以某种方式使用查询中的元数据表来查明表是否存在:

SELECT count(*) > 0 FROM sqlite_master where tbl_name = "<table_name>" and type="table"