Staram się upewnić, kiedy uruchomić następujące zapytanie tylko pierwszy INSERT INTO
będzie działać .. wiem, że muszę zrobić slot
UNIQUE
SQLite unikalny klucz z kombinacją dwóch kolumnach
Szczelina może być z 0-5 INTEGER, ale nie oznacza to, że tylko 6 wierszy danych tabeli może zostać zaakceptowanych w tej tabeli.
Dla każdego playerHash, który je pasuje, powinno być dozwolone tylko 6 wierszy danych tabeli jako slot
jest UNIQUE
(nie może mieć duplikatu tej samej kolumny szczeliny, dla każdej kolumny 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);
Problem oczywiście jest to, że wszyscy przechodzą i spowodować zduplikowane wpisy
Obecnie używam tej tabeli 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
);
działa świetnie teraz najpierw włożyć przechodzi kolejna wkładka daje mi. error 'Błąd podczas wykonywania zapytania: pole kolumn, playerHash nie są unikalne' – SSpoke
Nie wiedziałem, jak połączyć je w unikalny sposób za pomocą SQLiteStudio, okazuje się, nie ma nic wspólnego z edycją kolumn z unikatowymi itp. po prostu musieliście stworzyć Wiązanie Tablicy z Typem Unikatowym, a następnie zaznaczyć pole wyboru dla każdej kolumny. – SSpoke
@Sspoke Pamiętaj, aby użyć [insertorthrow] zamiast [insert] –