Проблемы с оператором INSERT включают в себя: -
Вы, похоже, пытаетесь выполнить INSERT SELECT, когда значения, которые нужно вставить, получены из предложения SELECT, но вы пытаетесьсмешайте это с ценностями.Два типа не могут быть объединены.
Вы пытаетесь выбрать использование столбцов в скобках, и в любом случае эти три столбца НЕ будут соответствовать 6 столбцам, необходимым для вставки.
У вас есть только 1 ?
для привязки, вы пытаетесь связать 6.
Я бы посоветовал вам упроститьвопросы, определяя таблицу с УНИКАЛЬНЫМ ограничением на столбцы доктора, даты и времени.Затем используйте стандарт INSERT OR IGNORE с предложением VALUES.
, например, рассмотрите следующий демонстрационный SQL: -
DROP TABLE IF EXISTS appointments;
CREATE TABLE IF NOT EXISTS appointments (patient_firstname TEXT, patient_surname TEXT, fees REAL, time TEXT, date TEXT, doctor INTEGER, UNIQUE (doctor, date, time));
INSERT OR IGNORE INTO appointments VALUES ('Fred','Bloggs',100.50,'10:00','2019-01-01',1);
INSERT OR IGNORE INTO appointments VALUES ('Mary','Smith',100.50,'10:00','2019-01-01',2);
INSERT OR IGNORE INTO appointments VALUES ('Sue','Bell',100.50,'10:00','2019-01-01',2);
SELECT * FROM appointments;
Это приведет к: -
![enter image description here](https://i.stack.imgur.com/ULEpM.png)
т.е. назначение Сью Белл не было добавлено из-за конфликта ограничений UNIQUE, который был проигнорирован, поэтому ошибки нет.
Журналсущество: -
DROP TABLE IF EXISTS appointments
> OK
> Time: 0.177s
CREATE TABLE IF NOT EXISTS appointments (patient_firstname TEXT, patient_surname TEXT, fees REAL, time TEXT, date TEXT, doctor INTEGER, UNIQUE (doctor, date, time))
> OK
> Time: 0.084s
INSERT OR IGNORE INTO appointments VALUES ('Fred','Bloggs',100.50,'10:00','2019-01-01',1)
> Affected rows: 1
> Time: 0.083s
INSERT OR IGNORE INTO appointments VALUES ('Mary','Smith',100.50,'10:00','2019-01-01',2)
> Affected rows: 1
> Time: 0.084s
INSERT OR IGNORE INTO appointments VALUES ('Sue','Bell',100.50,'10:00','2019-01-01',2)
> Affected rows: 0
> Time: 0s
SELECT * FROM appointments
> OK
> Time: 0.003s