【问题标题】:Rename SQLite table not working重命名 SQLite 表不起作用
【发布时间】:2014-01-20 10:53:32
【问题描述】:

我正在使用以下代码(在 B4A 中)删除旧的 CUSTOMERS 表,然后重命名它的新版本。但是,我总是得到一个空白的(新的)CUSTOMERS 表。如果我不重命名 CUSTOMERS_NEW 表,则使用正确的行数 (1825) 是完全可以的。

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

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

【问题讨论】:

  • 表名是newcustomers还是customers_new
  • 旧表为customers,新表为newcustomers。

标签: sqlite alter


【解决方案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找到文档。

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 2014-09-29
    • 2020-06-19
    • 2015-12-31
    • 1970-01-01
    • 2018-06-19
    • 2018-02-06
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多