3 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個贊
從SQLite網(wǎng)站:
SQLite使用特殊SQLITE_SEQUENCE表跟蹤表曾經(jīng)擁有的最大ROWID 。SQLITE_SEQUENCE每當(dāng)創(chuàng)建包含AUTOINCREMENT列的普通表時,都會自動創(chuàng)建并初始化該表。SQLITE_SEQUENCE可以使用普通的UPDATE,INSERT和DELETE語句修改表的內(nèi)容。但是對此表進(jìn)行修改可能會干擾AUTOINCREMENT密鑰生成算法。進(jìn)行此類更改之前,請確保您知道自己在做什么。
我試過了,它有效:
UPDATE SQLITE_SEQUENCE SET seq = <n> WHERE name = '<table>'
其中n +1是您想要的下一個ROWID,而table是表名。

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個贊
我正在使用下面的查詢,當(dāng)sqlite_sequence沒有該表的記錄時(即,第一條記錄尚未添加到表中),它解決了該問題,否則它將更新序列。
BEGIN TRANSACTION;
UPDATE sqlite_sequence SET seq = <n> WHERE name = '<table>';
INSERT INTO sqlite_sequence (name,seq) SELECT '<table>', <n> WHERE NOT EXISTS
(SELECT changes() AS change FROM sqlite_sequence WHERE change <> 0);
COMMIT;
添加回答
舉報(bào)