SQLite查找最近或下一个ROWID的ROWID

时间:2013-10-28 17:37:32

标签: sqlite rowid

所以我有一张包含图像数据的表格。该表看起来像这样......

ROWID|title|description|file_path

文件路径包含图像的名称。我想重命名图像以匹配ROWID。

如何获得最新的ROWID?我还需要考虑已删除的行,因为我将其用作自动增量主键。因为,如果表中的行已被删除,则表可能看起来像这样......

1|title A|description A|..\fileA.jpg
2|title B|description B|..\fileB.jpg
5|title E|description E|..\fileE.jpg
7|title G|description G|..\fileG.jpg

最重要的是,可能有一行或多行已被删除,因此下一个ROWID可能是10我所知道的。

我还需要考虑一个新的新表或删除了所有数据的表,下一个ROWID可以是1000.

总之,我猜真正的问题是;有没有办法找出下一个ROWID会是什么?

4 个答案:

答案 0 :(得分:2)

如果您在主键字段中指定了AUTOINCREMENT且表不为空,则此查询将返回表MY_TABLE的最新ROWID:

SELECT seq
FROM sqlite_sequence 
WHERE name = 'MY_TABLE'

答案 1 :(得分:0)

用什么语言?看起来c API具有以下功能:

sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);

http://www.sqlite.org/c3ref/last_insert_rowid.html

您也可以这样做:

select MAX(rowid) from [tablename];

答案 2 :(得分:0)

不幸的是,这些方法都没有按照我需要的方式完全发挥作用,但我最终做的是....

将数据插入到表中,其中包含我需要rowid的字段以填充' aaa' 然后使用数据更新行。

这似乎解决了我目前的问题。希望它不会导致另一个问题。

答案 3 :(得分:0)

我认为last_insert_rowid通常就是你想要的。

请注意,rowid行为根据自动增量标记而有所不同 - 要么单调增加,要么假定任何空闲ID。但这通常不会影响任何较小的用例。