如何维护包含预定义数据和用户数据的表SQLite

时间:2017-11-08 17:47:50

标签: android sql sqlite

我有一个表格,其中包含我的移动应用程序附带的一组X预定义记录,每条记录都带有一个整数自动递增主键。

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

但是,让我们说,通过应用更新,我希望在我的应用中使用X + 10预定义记录。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

为什么关键值很重要?你可以设计你的应用程序,以便他们不要?添加另一列代替您可以更好地控制?