sqlite中主键的正确递增

sqlite中主键的正确递增,sqlite,auto-increment,Sqlite,Auto Increment,我使用sqlite3并有一个简单的表 CREATE TABLE `data` ( `item_id` INTEGER, `item` TEXT NOT NULL UNIQUE, PRIMARY KEY(item_id) ); 插入一些值: INSERT OR IGNORE INTO `data` (`item`) VALUES ('A'), ('A'), ('B'); 这将导致: `item_id` | `item` ----------+------- 1

我使用sqlite3并有一个简单的表

CREATE TABLE `data` (
  `item_id` INTEGER,
  `item`    TEXT NOT NULL UNIQUE,
  PRIMARY KEY(item_id)
);
插入一些值:

INSERT OR IGNORE INTO `data` (`item`) VALUES ('A'), ('A'), ('B');
这将导致:

`item_id` | `item`
----------+-------
    1     |   A   
    3     |   B   
是否有可能以正确的方式获得主键的增量,如:

`item_id` | `item`
----------+-------
    1     |   A   
    2     |   B   

尝试将AUTOINCREMENT关键字添加到“item_id”列,然后指定值的增量:

CREATE TABLE `data` (
  `item_id` INTEGER AUTOINCREMENT (1, 1),
  `item`    TEXT NOT NULL UNIQUE,
  PRIMARY KEY(item_id)
);
我不完全确定它是否会工作,但我目前正在使用MS-SQL,创建表的语法似乎相当类似


希望这有帮助。

主键的连续性无法保证。这在大多数数据库中很常见,因为不仅可以删除行,还可以回滚事务——事务期间生成的所有主键都会丢失(另一个事务可能在另一个线程上并行运行,因此下一个ID也不能回滚)。像往常一样,.试图复制,但我的SQLite版本(3.11.0)在该insert语句上抛出了一个“UNIQUE constraint failed”错误。你是怎么避免的?Ups。。。。使用
插入或忽略到..
如果您关心主键的值,而不仅仅是它有唯一的值,请不要使用自动递增主键。尽管如此简单。SQLite不允许在AUTOINCREMENT之后传递参数,并且它只能是主键子句的一部分。)啊,那太糟糕了。你想做的最简单的事情总是最难的。谢谢你的澄清。