当前位置:  开发笔记 > 数据库 > 正文

在SQLite中设置AUTOINCREMENT的起始值

如何解决《在SQLite中设置AUTOINCREMENT的起始值》经验,为你挑选了4个好方法。

如何在SQLite中设置AUTOINCREMENT字段的起始值?



1> Christian Da..:

来自SQLite网站:

SQLite使用特殊SQLITE_SEQUENCE表跟踪表所拥有的最大ROWID .SQLITE_SEQUENCE只要创建包含AUTOINCREMENT列的普通表,就会自动创建并初始化该表.SQLITE_SEQUENCE可以使用普通的UPDATE,INSERT和DELETE语句修改表的内容.但是对此表进行修改可能会扰乱AUTOINCREMENT密钥生成算法.在进行此类更改之前,请确保您知道自己在做什么.

我试过这个,它有效:

UPDATE SQLITE_SEQUENCE SET seq =  WHERE name = ''

其中n +1是你想要的下一个ROWID,table是表名.



2> dave mankoff..:

显式插入value-1表中,然后删除该行.

编辑:下一个评论下来,讨论SQLITE_SEQUENCE直接编辑表可能更可取:https://stackoverflow.com/a/692871/10093


我想这是最好的方法,但它并不漂亮.

3> iTech..:

我使用下面的查询解决了当sqlite_sequence没有表的记录时的问题(即第一条记录尚未添加到表中),否则它会更新序列.

BEGIN TRANSACTION;

UPDATE sqlite_sequence SET seq =  WHERE name = '
'; INSERT INTO sqlite_sequence (name,seq) SELECT '
', WHERE NOT EXISTS (SELECT changes() AS change FROM sqlite_sequence WHERE change <> 0); COMMIT;



4> jle..:

一种方法是插入第一行,明确指定您要开始的行ID.然后SQLite将插入高于前一个最高的行ID.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有