【问题标题】:sqlite: dropping a table in a transaction?sqlite:在事务中删除表?
【发布时间】:2018-01-30 04:39:59
【问题描述】:

我有一个简单的单表 sqlite3 数据库文件,它只有一个表。没有钥匙,无论是国外的还是国内的。没有触发器。我有以下工作流程:

如果数据库文件exixts打开它。

  • 开始独占交易
  • 按顺序从表中选择所有行。
  • 对每一行进行操作。
  • 删除每个操作的行。
  • 完成后,计算表中剩余的行数,如果为 0 则 DROP 表然后取消链接数据库文件
  • 提交或回滚事务

drop-table 总是失败并显示表被锁定的消息。我看过其他一些帖子,这些帖子表明可能存在开放式语句句柄或其他杂物。由于我对所有这些都使用“sqlite_exec()”,因此除了数据库句柄本身之外,我没有任何打开的数据库。

事务中不允许删除表吗?

【问题讨论】:

  • 你使用的是共享缓存模式吗?
  • 我没有专门设置那个模式。是否默认开启?

标签: sqlite


【解决方案1】:

删除表时,当表上仍有一些活动游标时,您会收到“表已锁定”消息,即,当您没有完成语句(或没有关闭任何语言的查询对象时)重新使用)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多