2013-05-13 4 views
0

Когда я запустить эти запросы:Почему этот запрос sql не возвращает никаких ошибок?

create table University (branch text primary key, region text, enrollment int); 
create table Student (sID int primary key, sName text, average int); 
create table Apply (sID int references Student(sID), branch text references University(branch), major text, decision text); 

insert into Apply values (123, 'stanford', 'CS', 'Y'); 

Он должен вернуть ошибку, потому что я вставляя кортеж, который не имеет соответствующего значения в справочной таблице. но когда я запускаю эти команды, этот кортеж успешно завершает. Что случилось с этими запросами? Моя СУБД является sqlite, и я использую sqliteman.

ответ

1

Вы должны научиться enable foreign key support

Цитирование документы:

Для того, чтобы использовать ограничения внешних ключей в SQLite, библиотека должна быть компилируется ни с SQLITE_OMIT_FOREIGN_KEY или SQLITE_OMIT_TRIGGER определены. Если SQLITE_OMIT_TRIGGER определен, но SQLITE_OMIT_FOREIGN_KEY нет, то SQLite ведет себя так, как это было до версии 3.6.19 - . Определения внешнего ключа анализируются и могут быть запрошены с использованием PRAGMA foreign_key_list, но ограничения внешнего ключа не применяются. Команда PRAGMA foreign_keys в этой конфигурации не работает. Если определено OMIT_FOREIGN_KEY, то определения внешнего ключа не могут быть проанализированы даже (попытка указать определение внешнего ключа - это синтаксис ).

sqliteman constraint triggers Также читайте:

Существует еще одна особенность не поддерживается SQL. Sqlite не применяет внешние ключи , а не null.

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