Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有两列组合的SQLite唯一键_Sql_Database_Database Design_Sqlite - Fatal编程技术网

具有两列组合的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));