如何使用FMDB删除特定的表格列?

时间:2017-08-08 07:12:26

标签: ios swift fmdb

我正在尝试使用FMDB

从人员中删除列last_name
let query = "ALTER TABLE Persons DROP COLUMN last_name;"
try FMDBHelper.database.executeUpdate(query, values: nil)

但附带错误

  

数据库错误:1"接近" DROP":语法错误"。

2 个答案:

答案 0 :(得分:2)

sqlite不支持ALTER TABLE中的DROP COLUMN。

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

如果您需要删除列,请创建一个新表,在那里复制数据,删除旧表并将表重命名为其用户名。

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

答案 1 :(得分:0)

请注意,我已标记您的问题可能会重复,我会提供一个答案,以便更清楚。

我认为你缺少一个点,即:FMDB是(如他们的回购说明中所述):

  

这是 SQLite

的Objective-C包装器

请记住,由于FMDB是建立在SQLite之上的,因此是库本身的限制;它与SQLite ALTER TABLE的工作方式有关。

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

  

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

<子> http://www.sqlite.org/lang_altertable.html

为了实现您的目标:

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