【发布时间】:2014-07-28 12:19:44
【问题描述】:
我们将 sqlite 用于我们的移动项目 - 但是当我们尝试使用我们的长 id 变量作为主键自动增量时 - 代码给出错误“Autoincrement is only allowed in integer primary key”。当我在网上查看这个错误时,我发现bigint类型不允许sqlite中的自动增量。
有趣的是bigint 也是由整数实现的——sqlite 没有bigint 类型——它只是使用整数的大小来决定它是否是bigint。
http://www.sqlite.org/datatype3.html
为了解决这个问题 - 我用“bigint”替换了创建表的开源代码,并用“integer”替换了它,并编写了一些测试代码来验证它是否可以在常规整数的边界之外工作(添加了一个id 大于整数范围的 item 并连续添加了 10 个对象)。
它现在似乎正在运行 - 但我想知道它是否会导致其他一些问题。我们正在将移动应用程序 ID 同步到我们的数据库 ID,因此我们肯定会有大于正常整数范围的 ID。
这个解决方案是一个有效的解决方案吗?这会造成什么样的麻烦?
【问题讨论】:
标签: sqlite xamarin auto-increment portable-class-library sqlite.net