具有两列组合的SQLite唯一键
我正在尝试确保当我运行以下查询时,只有第一个插入到中的具有两列组合的SQLite唯一键,sql,database,database-design,sqlite,Sql,Database,Database Design,Sqlite,我正在尝试确保当我运行以下查询时,只有第一个插入到中的可以工作。。我知道我必须使插槽独一无二 槽可以是0-5整数,但这并不意味着该表只能接受6个表数据行 对于匹配的每个playerHash,它应该只允许6个表数据行,因为插槽是唯一的(对于每个playerHash列,不能有相同插槽列的副本) 当然,问题是它们都通过并导致重复条目 目前我使用这个表DDL CREATE TABLE Buying ( id INTEGER PRIMARY KEY AUTOINCREMENT,
可以工作。。我知道我必须使插槽
独一无二
槽可以是0-5整数,但这并不意味着该表只能接受6个表数据行
对于匹配的每个playerHash,它应该只允许6个表数据行,因为插槽
是唯一的
(对于每个playerHash列,不能有相同插槽列的副本)
当然,问题是它们都通过并导致重复条目
目前我使用这个表DDL
CREATE TABLE Buying (
id INTEGER PRIMARY KEY AUTOINCREMENT,
itemId INTEGER NOT NULL,
amount INTEGER NOT NULL,
price INTEGER NOT NULL,
bought INTEGER NOT NULL,
collected INTEGER NOT NULL
DEFAULT ( 0 ),
overpaid INTEGER NOT NULL
DEFAULT ( 0 ),
slot INTEGER NOT NULL,
aborted BOOLEAN NOT NULL
DEFAULT ( 0 ),
playerHash INTEGER NOT NULL
);
添加到您的ddl中
create table ... ( ...
...,
unique(slot, player));
现在效果很好第一次插入通过下一次插入给我。错误执行查询时出错:列slot、playershash不是唯一的
我不知道如何使用SQLiteStudio以独特的方式将它们链接起来,结果证明,它与将列编辑为唯一等无关。。您只需创建一个类型为Unique的表约束,然后选中每列的复选框。@SSpoke请记住使用[insertorthrow]而不是[insert]
create table ... ( ...
...,
unique(slot, player));