che sto cercando di fare in modo quando si esegue la seguente query solo il primo INSERT INTO
funzionerà .. So che devo fare slot
UNIQUE
SQLite chiave univoca con una combinazione di due colonne
Lo slot potrebbe essere da 0-5 INTEGER ma ciò non significa che solo 6 righe di dati di tabella possano essere accettate in quella tabella.
Per ciascun playerHash che corrisponde deve consentire solo 6 righe di dati di tabella come slot
è UNIQUE
(non può avere duplicato della stessa colonna di slot, per ogni colonna PlayerHash).
//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);
problema, naturalmente, è che tutto passa e causare voci duplicate
Attualmente io uso questa tabella 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
);
Opere grande ora primo inserto passa il prossimo inserimento mi dà. errore 'Errore durante l'esecuzione della query: slot colonne, playerHash non è univoco' – SSpoke
Non sapevo come collegarli in un modo unico usando SQLiteStudio, risulta, non ha nulla a che fare con la modifica delle colonne su univoco ecc .. hai appena dovuto creare un vincolo di tabella con Type Unique, quindi hai selezionato la casella di controllo di ogni colonna. – SSpoke
@SSpoke ricorda di usare [insertorthrow] invece di [inserire] –