重命名SQLite表不起作用

时间:2014-01-20 10:53:33

标签: sqlite alter

我使用以下代码(在B4A中)删除旧的CUSTOMERS表,然后重命名它的新版本。但是,我总是最终得到一个空白(新)CUSTOMERS表。如果我没有重命名,那么CUSTOMERS_NEW表就可以正确显示行数(1825)。

sqlOBT.ExecNonQuery("DROP TABLE customers")                                     
sqlOBT.ExecNonQuery("ALTER TABLE newcustomers RENAME TO customers")
sqlobt.close

我很困惑为什么它不起作用。

1 个答案:

答案 0 :(得分:1)

SQLite的表命名约定非常特别。你可以尝试:

sqlOBT.ExecNonQuery("ALTER TABLE 'newcustomers' RENAME TO 'customers'")

此外,您可能需要使用ALTER TABLE / BEGIN命令将COMMIT TRANSACTION命令夹在中间。使用sqlite3,您的代码可能如下所示:

sqlOBT.ExecNonQuery("BEGIN TRANSACTION")
sqlOBT.ExecNonQuery("ALTER TABLE 'newcustomers' RENAME TO 'customers'")
sqlOBT.ExecNonQuery("COMMIT TRANSACTION")

python中,我理解这种情况,因为sqlite3模块在​​某些情况下会自动打开交易,而在其他情况下则不会。可以找到文档here