如何维护具有预定义数据和用户数据SQLite的表



我有一个表,其中包含一组 X 预定义记录,这些记录随我的移动应用程序一起提供,每条记录都有一个整数自动递增主键。

现在,我想允许用户添加自己的记录。

但是,假设通过应用程序更新,我想使用我的应用程序对预定义的记录进行 X+10。

请记住,自定义记录主键在其他表中用作外键。

如何升级数据库,同时保持其他表中自定义添加的记录外键 ID 的一致性,同时保持新的 x+10 主键 ID 与出厂时相同?

您希望将应用程序升级附带的额外十行插入到严格低于客户端将使用的范围的范围内,以便它们不会发生冲突,并且您仍然可以为新行分配已知数字。

除非您最初创建了一个"死区",在工厂发货的几行和客户端能够分配的第一个 ID 之间没有插入,以便为自己保留范围,否则您唯一的办法是使用负数执行十个额外的插入。

如果使用主

键的 AUTOINCREMENT 关键字创建了表,则无法重复使用旧键。您必须添加用户添加记录的副本,然后使用预定义的数据更新原始记录。您还必须更新链接到这些记录的其他表中的任何外键。

为什么使用自动增量?如果不使用它,如果您不指定键,它仍会自动递增整数键。如果未使用 AUTOINCREMENT,则可以更新主键(如果外键设置为在更新时级联,则应更新外键),然后添加具有所需键的预定义记录。您必须查询以找出最大的当前密钥是什么,并确保更新的密钥大于该密钥。

为什么键值很重要?你能设计你的应用程序,让他们不这样做吗?添加另一列来代替,以便您有更多控制权?

最新更新