Android 如何在数据库中实现唯一的优先级字段?

Android 如何在数据库中实现唯一的优先级字段?,android,sql,sqlite,Android,Sql,Sqlite,我正在为事件对象创建一个数据库,每个事件都有一个唯一的优先级(long)。优先权值较低的对象受到青睐,较新的对象最初会随着对象数量的增加而被分配越来越高的优先级,但用户可以随意重新分配优先级 我的问题是我应该使用just _ID作为优先级字段吗?我想,当我选择它们并将它们放入Java中的ArrayList中时,我的事件已经按优先级从高到低排序,省去了搜索的麻烦。根据SQLite实际使用的算法,按优先级选择可能会更快,因为它也是一个索引。我是SQL新手,这一切对我来说似乎都很好,但可能有一些缺点,

我正在为事件对象创建一个数据库,每个事件都有一个唯一的优先级(long)。优先权值较低的对象受到青睐,较新的对象最初会随着对象数量的增加而被分配越来越高的优先级,但用户可以随意重新分配优先级

我的问题是我应该使用just _ID作为优先级字段吗?我想,当我选择它们并将它们放入Java中的ArrayList中时,我的事件已经按优先级从高到低排序,省去了搜索的麻烦。根据SQLite实际使用的算法,按优先级选择可能会更快,因为它也是一个索引。我是SQL新手,这一切对我来说似乎都很好,但可能有一些缺点,这对更有经验的人来说是显而易见的

此外,我还不清楚插入到表中间的操作方式,可能使用update函数来增加上面的行ID,但如何确保以正确的顺序增加它们?(以免互相踩踏)

像这样的

UPDATE event_table SET priority = priority + 1 WHERE priority > ?

注:我在SQLite 3中的Android 2.2上做这件事,我认为使用decimal数据类型的优先级值可以更容易地插入到表的中间。而且在排序时不需要进行大量的移位。

我可以这样做,但这无助于我按优先级对列表进行排序。我可以节省插入的时间,但要花更多的时间搜索。当一个事件(比如优先级为5)必须执行时,我必须查看优先级为0,1,2,3,4的事件,以防它们发生冲突。我宁愿在每次插入时进行代价高昂的排序,也不愿在每次查找冲突时进行代价高昂的搜索。我会更经常地搜索。嗨,如果您缩小了搜索范围,请告诉我们。:-)