所以我有一张包含图像数据的表格。该表看起来像这样......
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会是什么?
答案 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。但这通常不会影响任何较小的用例。