Я пытаюсь, чтобы убедиться, когда я запускаю следующий запрос только первый INSERT INTO
будет работать .. Я знаю, что я должен сделать slot
UNIQUE
SQLite уникальный ключ с комбинацией двух колонок
Щель может быть от 0-5 INTEGER, но это не означает, что в эту таблицу могут быть приняты только 6 строк данных таблицы.
Для каждого игрока, который соответствует ему, должен разрешать только 6 строк данных таблицы, поскольку slot
- UNIQUE
(не может иметь дубликат одного и того же столбца слота для каждой колонки игрокаHash).
//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
);
Прекрасно работает в настоящее время первой вставки проходит следующая вставка. error 'Ошибка при выполнении запроса: слот колонок, playerHash не уникальны' – SSpoke
Я не знал, как связать их уникальным способом с помощью SQLiteStudio, получается, что это не имеет никакого отношения к редактированию столбцов к уникальным и т. д. вам просто нужно было создать ограничение таблицы с помощью Type Unique, а затем установить флажок для каждого столбца. – SSpoke
@SSpoke не забудьте использовать [insertorthrow] вместо [insert] –