2013-12-18 3 views
7

Я пытаюсь, чтобы убедиться, когда я запускаю следующий запрос только первый INSERT INTO будет работать .. Я знаю, что я должен сделать slotUNIQUESQLite уникальный ключ с комбинацией двух колонок

Щель может быть от 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 
); 

ответ

23

Добавить в свой DDL

create table ... (... 
..., 
unique(slot, player)); 
+0

Прекрасно работает в настоящее время первой вставки проходит следующая вставка. error 'Ошибка при выполнении запроса: слот колонок, playerHash не уникальны' – SSpoke

+1

Я не знал, как связать их уникальным способом с помощью SQLiteStudio, получается, что это не имеет никакого отношения к редактированию столбцов к уникальным и т. д. вам просто нужно было создать ограничение таблицы с помощью Type Unique, а затем установить флажок для каждого столбца. – SSpoke

+2

@SSpoke не забудьте использовать [insertorthrow] вместо [insert] –

Смежные вопросы