У меня есть таблица под названием BB:
CREATE TABLE BB (
SID INTEGER PRIMARY KEY,
FName TEXT,
LName TEXT
);
И таблица с именем QR, которая содержит составной внешний ключ, ссылающийся на строки FName и LName в таблице BB.
CREATE TABLE QR (
QID INTEGER PRIMARY KEY AUTOINCREMENT,
FName TEXT,
LName TEXT,
DateTime_IN TEXT,
Sid4 INTEGER,
Mode TEXT,
FOREIGN KEY (FName, LName) REFERENCES BB (FName, LName)
);
и таблица ББ заполняется этими данными:
INSERT INTO BB (SID, FName, LName) VALUES
(12345678, "R", "B"),
(23456789, "X", "C"),
(34567890, "M", "S"),
(45678901, "Z", "H"),
(56789012, "T", "A"),
(67890123, "N", "F"),
(78901234, "H", "M"),
(89012345, "A", "S"),
(90123456, "F", "F"),
(12345677, "M", "M");
И нужно вставить эти данные в таблицу QR:
INSERT INTO QR
(FName, LName, DateTime_IN, Sid4, Mode)
VALUES
("R", "B", "2021-08-10 14:00:02", 12345678, "ZOOM"),
("X", "C", "2021-08-10 14:00:02", 23456789, "ZOOM"),
("M", "S", "2021-08-10 14:00:03", 34567890, "ZOOM"),
("Z", "H", "2021-08-10 15:01:01", 45678901, "ZOOM"),
("T", "A", "2021-08-10 14:01:01", 56789012, "ZOOM"),
("N", "F", "2021-08-10 14:02:02", 67890123, "ZOOM"),
("H", "M", "2021-08-10 14:03:03", 78901234, "ZOOM"),
("A", "S", "2021-08-11 14:04:04", 89012345, "ZOOM");
Но когда я запускаю его в браузере БД, я получаю эту ошибку:
Execution finished with errors.
Result: foreign key mismatch - "QR" referencing "BB"
At line 1:
INSERT INTO QR
(FName, LName, DateTime_IN, Sid4, Mode)
VALUES
("R", "B", "2021-08-10 14:00:02", 12345678, "ZOOM"),
("X", "C", "2021-08-10 14:00:02", 23456789, "ZOOM"),
("M", "S", "2021-08-10 14:00:03", 34567890, "ZOOM"),
("Z", "H", "2021-08-10 15:01:01", 45678901, "ZOOM"),
("T", "A", "2021-08-10 14:01:01", 56789012, "ZOOM"),
("N", "F", "2021-08-10 14:02:02", 67890123, "ZOOM"),
("H", "M", "2021-08-10 14:03:03", 78901234, "ZOOM"),
("A", "S", "2021-08-11 14:04:04", 89012345, "ZOOM");
Почему он не позволяет мне вставить эти данные. Все данные верны и соответствуют таблице BB. Я использую SQLite версии 3.34.1 с браузером БД.
Даже когда я запускаю код, который вы связали, который совпадает с моим, и делаю это в этом порядке, я получаю ту же ошибку, когда просто пытаюсь вставить данные в таблицу BB. На данный момент все, что было сделано, это создание таблицы BB и QR. Это не позволит мне вставить данные в таблицу BB, если таблица QR существует. Мне приходилось сбрасывать таблицу QR, чтобы вставить данные в таблицу BB. @BarbarosÖzhan
Можете ли вы поделиться как рабочий пример, что вы сделали?
Проблема с вашим кодом в том, что комбинация FName
и LName
родительской таблицы BB
не определена как UNIQUE
.
С этим изменением:
CREATE TABLE BB (
SID INTEGER PRIMARY KEY,
FName TEXT,
LName TEXT,
UNIQUE(FName, LName)
);
это будет работать как надо.
Но правильным дизайном в вашем случае было бы определение в QR
целочисленного столбца, ссылающегося на столбец SID
из BB
вместо составного внешнего ключа:
CREATE TABLE QR (
QID INTEGER PRIMARY KEY AUTOINCREMENT,
SID INTEGER REFERENCES BB (SID),
DateTime_IN TEXT,
Sid4 INTEGER,
Mode TEXT
);
Добавление уникального утверждения сработало, спасибо. Это для школьного задания, поэтому я не могу изменить ряды, но все равно спасибо.