我正在尝试使用FMDB,
从人员中删除列last_namelet query = "ALTER TABLE Persons DROP COLUMN last_name;"
try FMDBHelper.database.executeUpdate(query, values: nil)
但附带错误
数据库错误:1"接近" DROP":语法错误"。
答案 0 :(得分:2)
sqlite不支持ALTER TABLE中的DROP COLUMN。
您只能重命名表并添加列。
如果您需要删除列,请创建一个新表,在那里复制数据,删除旧表并将表重命名为其用户名。
答案 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的答案。