FMDB MODIFY 查询无法在现有 SQLite 数据库中设置约束
Posted
技术标签:
【中文标题】FMDB MODIFY 查询无法在现有 SQLite 数据库中设置约束【英文标题】:FMDB MODIFY query not working to set constraints in existing SQLite database 【发布时间】:2019-06-04 08:57:25 【问题描述】:我的 sqlite 数据库在 tbl_order 中有一个名为 order_id 的现有列,其中包含重复的条目。 我正在尝试删除重复条目并添加约束(唯一)来解决这个问题。
所以我尝试了以下代码来解决上述问题。 我检查了以前和当前的构建版本来管理现有的和新的数据库。
它成功执行了第一个查询,但在修改约束中显示错误。
if (previousBuildVersion < currentBuildVersion)
FMResultSet *result = nil;
result = [self.objDB executeQuery:@"SELECT DISTINCT order_id FROM tbl_order ORDER BY order_id"];
[self.objDB executeUpdate:@"ALTER TABLE 'tbl_order' MODIFY \ 'order_id' TEXT NOT NULL UNIQUE \ ;"];
我在 Xcode 中收到此错误:
“修改”附近的[记录]:语法错误
数据库错误:1“靠近“修改”:语法错误”
由于我使用 FMDB 库的经验非常少,因此请提出解决方案。
提前致谢。
【问题讨论】:
【参考方案1】:sqlite 中的列一旦创建就不能更改。
仅支持ALTER TABLE
命令的RENAME TABLE
和ADD COLUMN
变体。其他类型的ALTER TABLE
操作如DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT,
等被省略。
请查看此链接了解更多详情: https://www.sqlite.org/omitted.html
【讨论】:
以上是关于FMDB MODIFY 查询无法在现有 SQLite 数据库中设置约束的主要内容,如果未能解决你的问题,请参考以下文章