在SQLite表中更改键的最佳方法是什么?

本文关键字:最佳 方法 是什么 SQLite | 更新日期: 2023-09-27 18:06:35

我有分层数据存储在一个树视图,这是从SQLite数据库填充。根据用户的操作,树节点的id可以改变(如果他们在节点001之前添加了一个新节点,那么从001到末尾的所有节点的键值都将增加1)。

这在更新数据库时证明很麻烦——因为更新001的值可能会更新错误的节点——因为一个节点已添加到树中。

我已经找到了一种方法来绕过这个,但对我来说似乎很愚蠢。我只是在更新之前清除表,删除所有记录,然后重新添加它们。但是这看起来很糟糕,因为如果在添加它们的过程中有一个bug,那么所有剩余的项目将不会被添加。

我能想到的唯一其他解决方案是,当向树添加节点时,我可以给新节点一个键00x(其中x是树中的节点数)。但这就意味着键是乱序的。

最好的方法是什么?可能不是我现在的样子。

在SQLite表中更改键的最佳方法是什么?

您可以使用单独的排序字段。据我所知,你改变id的唯一原因是改变顺序——所以把顺序放在其他地方。

(您甚至可能会疯狂,只要求顺序在特定节点的子节点中是唯一的,但在这样做之前,请考虑如何使用SQL查询构建它)

直接加到结尾有什么大不了的吗?为什么一定要在前面或中间?看来你的数字除了订货没有任何意义。

为什么不创建一个主键,你可以添加到末尾,这些数字永远不会改变,所以如果你有1-10,你添加它,新的一个是11。然后你可以对列进行递增,我假设你专门用它来排序。通过这种方式,您可以使用现有的内容进行排序,但是在更新时使用主键,其中所有内容都必须是唯一的,并且一旦分配了编号就永远不会更改。