如果存在另一个表,则在SQLite中创建临时表

时间:2014-03-09 02:15:59

标签: sqlite cordova hybrid-mobile-app

我需要在SQLite数据库中创建一个临时表(它是Employees表的副本),前提是存在名为“Employees”的表。 Employees表中只有2列 - EmployeeId(整数)和EmployeeName(varchar(100))。

有没有办法使用SQLite SQL实现上述功能?

预期SQL的伪代码,在SQlite中不起作用如下所示。我希望有一些像SQLite中的伪代码一样强大。

--if Employees table exists then create a temp table and populate it with all 
--rows from Employees table
CREATE TEMP TABLE tempEmployees if exists Employees as select *  from Employees;

1 个答案:

答案 0 :(得分:2)

SQLite几乎没有控制逻辑;作为一个嵌入式数据库,它被设计为与“真正的”编程语言一起使用。

您可以尝试复制数据,并忽略错误:

try:
    c.execute("CREATE TEMP TABLE tempEmployees AS SELECT * FROM Employees")
except:
    pass

但是,这也可以抑制任何其他错误。

更好的想法是明确检查表是否存在:

c.execute("SELECT 1 FROM sqlite_master WHERE type='table' AND name='Employees'")
if c.fetchone():
    c.execute("CREATE TEMP TABLE tempEmployees AS SELECT * FROM Employees")