如何在SQLite中删除所有空表?

5

我想删除所有没有行的表。

如何在SQLite中删除所有空表?

编辑
我需要在手机上完成此操作(没有shell)。 在Windows Mobile手机上。


1
很可能可以用Shell脚本或Perl完成。 - Yada
我需要在移动电话上做这件事(那里没有shell)。在一个Windows Mobile手机上。 - Pentium10
我们需要知道有哪些可用的编程语言(因为我不清楚,无论如何)。 - OMG Ponies
我可以将您告诉我的内容放入C#中执行。但我想知道是否有人会回答只用SQL的方法。 - Pentium10
1个回答

8

无论表中是否有数据,都可以删除表。没有任何数据库会操作不同。因此,这意味着:

1)获取表列表 -

SELECT name 
  FROM sqlite_master
 WHERE type = 'table'

2) 遍历该列表,使用COUNT(*)来确定表中是否存在任何行:

SELECT COUNT(*) 
  FROM ~table

3) 如果返回的数字小于1,执行DROP语句:

DROP TABLE ~table

SQLite不支持函数或存储过程 - 您需要从应用程序中完成此操作。


表名前的那个~是什么意思? - Pentium10
@Pentium10:伪变量。如果我使用$,人们可能会将其误认为是PHP变量。@是MySQL和SQL Server语法... - OMG Ponies
有没有一种方法可以在sqlite3中迭代遍历该列表? - Karoh
1
@Horak:我在快速搜索中没有找到任何表明SQLite支持动态SQL的东西。 - OMG Ponies
谢谢查看,我也没有。 - Karoh
@OMGPonies 如果你只需要迭代一行,那么从 ~table 中选择一行并检查是否返回了 0 或 1 行可能会更快。 - rsaxvc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接