我正在努力确保当我运行以下查询时,只有第一个INSERT INTO才能工作..我知道我必须使插槽独一无二
插槽可以是0-5 INTEGER,但这并不意味着该表中只能接受6个表数据行.
对于匹配它的每个playerHash应该只允许6个表数据行作为插槽是UNIQUE(对于每个playerHash列,不能有相同插槽列的副本).
//Below Query Should Pass INSERT INTO Buying(itemId,amount,price,bought,slot,playerHash) VALUES (1,1,1); //Below Query Should Fail INSERT INTO Buying(itemId,1); //Below Query Should Pass INSERT INTO Buying(itemId,2); //Below Query Should Fail INSERT INTO Buying(itemId,2); //Below Query Should Pass INSERT INTO Buying(itemId,2);
问题当然是它们都通过并导致重复的条目
目前我使用这个表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));