小编Dav*_*ave的帖子

sqlite:具有自动增量列的多列主键

我基本上想要使用以下方案将表从mysql转换为sqlite:

create table items (
id integer auto_increment,
version integer default 0,
primary key (id, version)
);
Run Code Online (Sandbox Code Playgroud)

本质上,每当我向表中插入任何内容时,我希望ID自动递增,VERSION从0开始,但只要VERSION不同,仍允许具有相同ID的多个项目.

我试图用Sqlite复制这种行为但是,我似乎无法让表创建工作.看起来你只允许一列作为自动增量,它必须是主键.如果我将ID作为主键,那么我就不能将VERSION用作键的一部分.但是,如果我创建一个多列密钥(ID,VERSION),那么我无法获得自动增量ID.

是否有解决方法或者更好的方法来设计我的表格?


我在考虑以下解决方案:

表格1:

create table items {
id integer primary autoincrement,
version integer}
Run Code Online (Sandbox Code Playgroud)

表2:

create table item_version {
id integer,
version integer,
primary key (id, version)
}
Run Code Online (Sandbox Code Playgroud)

当我添加一个新项目时,我将其添加到项目并具有ID自动增量.但是,如果我有相同ID的新版本,我将其添加到item_version.基本上,我使用item_version来保存除项目之外的所有内容,以生成唯一的ID.

database sqlite primary-key auto-increment

5
推荐指数
2
解决办法
7977
查看次数

标签 统计

auto-increment ×1

database ×1

primary-key ×1

sqlite ×1