7
我想確保當我運行下面的查詢只有第一INSERT INTO
將工作的結合。我知道我必須作出slot
UNIQUE
SQLite的唯一鍵有兩列
插槽可以從0-5 INTEGER,但這並不意味着只有6個表數據行可以被接受到該表中。
對於每個與它相匹配的playerHash,應該只允許6個表格數據行爲slot
爲UNIQUE
(對於每個playerHash列不能有同一個slot列的重複)。
//Below Query Should Pass
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 1);
//Below Query Should Fail
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 1);
//Below Query Should Pass
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 2);
//Below Query Should Fail
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 2);
//Below Query Should Pass
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 0, 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
);
偉大的作品,現在第一次插入通過下一個插入給我。錯誤 '執行查詢時出錯:列插槽,播放器哈希不是唯一的' – SSpoke
我不知道如何使用SQLiteStudio以獨特的方式將它們連接起來,事實證明,它與編輯列到唯一等無關。你只需創建一個帶有Type Unique的表約束,然後選中每個列的複選框。 – SSpoke
@SSpoke記得使用[insertorthrow]代替[insert] –