sqlite中主键的正确递增
我使用sqlite3并有一个简单的表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
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之后传递参数,并且它只能是主键子句的一部分。)啊,那太糟糕了。你想做的最简单的事情总是最难的。谢谢你的澄清。