Я храню различные последовательности в базе данных SQLite. Каждая последовательность имеет свой собственный идентификатор последовательности, и каждый элемент в последовательности имеет свой собственный индекс в последовательности, а также значение.
CREATE TABLE Sequence (rowid INTEGER PRIMARY KEY,
SequenceId INTEGER,
Index INTEGER,
Value TEXT);
Например, первая последовательность, которую я мог бы добавить, могла бы быть "Красная", "Зеленая", "Синяя" следующим образом:
INSERT INTO Sequence (SequenceId, Index, Value) VALUES (1,1,"Red"), (1,2,"Green"), (1,3,"Blue");
Я получаю SequenceId от другогоТаблица. Когда я буду готов добавить новую последовательность в базу данных, я сначала хочу убедиться, что ее там еще нет. Моей первой мыслью было, что я могу создать запрос проверки на наличие каждой строки в последовательности и AND их вместе. Например, перед добавлением последовательности «Красный», «Зеленый», «Синий» я бы запустил запрос, который выглядит следующим образом:
SELECT
EXISTS(SELECT * FROM Sequence
WHERE SequenceId = ? AND Index = 1 AND Value='Red')
AND EXISTS(SELECT * FROM Sequence
WHERE SequenceId = ? AND Index = 2 AND Value='Green')
AND EXISTS(SELECT * FROM Sequence
WHERE SequenceId = ? AND Index = 3 AND Value='Blue')
AND NOT EXISTS(SELECT * FROM Sequence
WHERE SequenceId = ? AND Index = 4);
Мне все равно, какой фактический ранее назначенный SequenceId был, только если последовательность существует. Но потом я понял, что у меня нет возможности убедиться, что SequenceId
одинаково для каждого предложения EXISTS.
Есть ли в SQLite какой-либо способ выполнить это?