Странное поведение внешнего ключа в пустых таблицах в SQLite 3
У меня есть SQLite 3 со следующей настройкой (упрощенно):
create table Location(LocationId integer not null,
LocationCode text not null,
primary key(LocationId),
unique(LocationCode));
На приведенную выше таблицу ссылается Департамент:
create table Department(DepartmentId integer not null,
LocationId integer not null,
DepartmentCode text not null,
primary key(LocationId, DepartmentCode),
foreign key(LocationId) references Location(LocationId));
На таблицу выше ссылается Child:
create table Event(EventId integer not null,
LocationId integer not null,
unique(LocationId, EventDate),
primary key(eventId),
foreign key(LocationId) references Location(LocationId));
Приведенная выше таблица ссылок на таблицу Расположение:
create table Parent(ParentId integer not null,
EmailAddress text not null,
primary key(ParentId),
unique(EmailAddress));
На таблицу выше ссылается таблица Child:
create table Child(ChildId integer not null,
ParentId integer not null,
ChildCode text not null,
DepartmentId integer not null,
primary key(ChildId, ParentId),
foreign key(ParentId) references Parent(ParentId),
foreign key(DepartmentId) references Department(DepartmentId));
Ребенок за столом - это яЯ пытаюсь удалить из.
На данный момент вся база данных пуста и имеет "pragma foreign_keys = ON ".
При тестировании скрипта для очистки базы данных я обнаружил ошибку при удалении из пустой таблицыChild
наличие внешнего ключа к (также пустой) таблице.Parent
Когда я выдаю командуdelete from child
(пока пусто), SQLite3 возвращается с сообщением об ошибке "несоответствие внешних ключей ".
Это важная часть скрипта удаления:
delete from Child;
delete from Parent;
delete from Event;
delete from Department;
delete from Location;
Я видел здесь несколько сообщений о временном отключении поддержки внешнего ключа, но это не имеет смысла для меня. Это делает ненужным весь процесс внедрения отношения внешнего ключа.