我需要在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;
答案 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")