仅当表存在时才从SQLite中删除

lig*_*h05 7 sql database sqlite

现在我有这个说法

DELETE FROM sqlite_sequence where name = 'table_name';
Run Code Online (Sandbox Code Playgroud)

在大多数情况下工作正常,但现在我有一个sqlite_sequence表没有创建表的情况,所以我回来了

no such table: sqlite_sequence
Run Code Online (Sandbox Code Playgroud)

我需要一个声明,如果表存在,只执行删除.我发现这个陈述告诉我表是否存在

SELECT name FROM sqlite_master WHERE type='table';
Run Code Online (Sandbox Code Playgroud)

但到目前为止,我一直无法成功地将它与删除声明配对

Ric*_*iwi 6

当然,表存在检查应该包括名称

SELECT count(*) FROM sqlite_master WHERE type='table' AND name='table_name';
Run Code Online (Sandbox Code Playgroud)

但是您必须在单独的语句中从调用应用程序执行此操作,即运行上面的操作,并根据计数(自然1 = true,0 = false)作为布尔值,您可以继续运行DELETE语句.

  • 虽然我一直在寻找一种在单个语句中执行此操作的方法,但我将其作为解决方案,因为 SQLite 中似乎没有一种方法可以在单个语句中执行此操作 (2认同)