1

所以我有一张关于图像数据的表格。桌子看起来像这样......

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

4 回答 4

3

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

SELECT seq
FROM sqlite_sequence 
WHERE name = 'MY_TABLE'
于 2013-10-28T17:57:53.880 回答
0

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

sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);

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

你也可以这样做:

select MAX(rowid) from [tablename];
于 2013-10-28T17:44:24.947 回答
0

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

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

于 2014-02-15T12:55:11.977 回答
0

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

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

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

于 2013-10-30T04:10:53.453 回答