SQLite只有在表存在的情况下才能进行删除操作。

23 浏览
0 Comments

SQLite只有在表存在的情况下才能进行删除操作。

目前我有这个语句

DELETE FROM sqlite_sequence WHERE name = 'table_name';

在大多数情况下运行良好,但现在有一个情况,sqlite_sequence 表没有被创建,所以我得到了

no such table: sqlite_sequence

我需要一个语句,只有在表存在时才执行删除操作。我找到了这个语句来告诉我表是否存在

SELECT name FROM sqlite_master WHERE type='table';

但到目前为止,我无法成功将它与删除语句配对。

0
0 Comments

在SQLite中,如果要在表存在的情况下执行删除操作,需要检查表是否存在。检查表存在性时应该包括表名。可以通过运行以下代码来实现:SELECT count(*) FROM sqlite_master WHERE type='table' AND name='table_name';。根据返回结果的计数(1表示真,0表示假),可以继续执行删除语句。尽管我一开始试图找到一种在单个语句中完成的方法,但由于SQLite似乎没有这样的功能,我将其作为解决方案。

如果想要在单个语句中实现这一功能,可以使用SELECT 1 ...代替COUNT(*)

原文链接:https://stackoverflow.com/questions/2729568

0