【问题标题】:How to delete specific table's column using FMDB?如何使用 FMDB 删除特定表的列?
【发布时间】:2017-08-08 07:12:25
【问题描述】:

我正在尝试使用 FMDB 从 Persons 中删除列 last_name,

let query = "ALTER TABLE Persons DROP COLUMN last_name;"
try FMDBHelper.database.executeUpdate(query, values: nil)

但是有错误

DB 错误:1“靠近“DROP”:语法错误”。

【问题讨论】:

标签: ios swift fmdb


【解决方案1】:

sqlite 不支持 ALTER TABLE 中的 DROP COLUMN。

您只能重命名表和添加列。

如果您需要删除列,请创建一个新表,将数据复制到那里,删除旧表并将该表重命名为其指定名称。

参考:http://www.sqlite.org/lang_altertable.html

【讨论】:

    【解决方案2】:

    请注意,我已标记您的问题可能重复,我将提供答案以使其更清楚。

    我认为您缺少一点,即:FMDB 是(如他们的回购描述中所述):

    这是一个围绕 SQLite

    的 Objective-C 包装器

    请记住,由于 FMDB 是在 SQLite 之上构建的,它不是库本身的限制;这与SQLite ALTER TABLE 的工作原理有关。

    SQLite ALTER TABLE 语句仅限于重命名一个表和add 一个新列到所需表:

    SQLite 支持 ALTER TABLE 的有限子集。更改表 SQLite 中的命令允许用户重命名表或添加新的 列到现有表。

    http://www.sqlite.org/lang_altertable.html


    为了实现您的目标:

    您可以查看Delete column from SQLite table的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-10
      • 2019-03-10
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多