Как прописывать FOREIGN KEY значение в INSERT INTO?
Допустим есть:
CREATE TABLE user (
user_id INTEGER,
username TEXT,
PRIMARY KEY (user_id)
)
CREATE TABLE info (
info_id INTEGER,
information TEXT,
FOREIGN KEY (info_id) REFERENCES user(user_id)
)
И как прописать INSERT INTO для info? Ведь если просто прописать
INSERT INTO info
VALUES (1, 'info if not defined')
То даже учитывая, что в таблице user нету пользователя с user_id 1 строка всё равно создастся и взаимосвязи нету.
Ответы (1 шт):
Для обеспечения обратной совместимости, по умолчанию, поддержка внешних ключей в SQLite отключена.
Если SQLite откомпилирована без опций SQLITE_OMIT_FOREIGN_KEY и SQLITE_OMIT_TRIGGER то поддержка внешних ключей включается командой
PRAGMA foreign_keys = ON;
команда
PRAGMA foreign_keys;
покажет текущее состояние переменной.
Если при компиляции был определен параметр SQLITE_OMIT_TRIGGER то внешние ключи игнорируются вне зависимости от PRAGMA foreign_keys.
Если при компиляции был определен параметр SQLITE_OMIT_FOREIGN_KEY то конструкция FOREIGN KEY (info_id) REFERENCES user(user_id) будет вызывать ошибку парсинга.