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

时间:2012-02-07 06:11:57

标签: android sql sqlite

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

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

另外,我有点不清楚插入到表格中间的方式是否有效,可能使用更新函数来增加其上方的row_id但是如何确保以正确的顺序递增它们? (以免彼此踩踏)。

这样的东西?:

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

P.S:我在SQLite 3的Android 2.2上做这个。

1 个答案:

答案 0 :(得分:0)

我认为使用decimal数据类型的优先级值可以更容易地插入到表的中间。当您重新排序时,不要求您进行大规模转移。