Extraño comportamiento de key externa en tablas vacías en SQLite 3

Tengo SQLite 3 con la siguiente configuration (simplificada):

create table Location(LocationId integer not null, LocationCode text not null, primary key(LocationId), unique(LocationCode)); 

La tabla de arriba está siendo referenceda por el Departamento:

 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)); 

La tabla de arriba está siendo referenceda por Child:

 create table Event(EventId integer not null, LocationId integer not null, unique(LocationId, EventDate), primary key(eventId), foreign key(LocationId) references Location(LocationId)); 

La tabla de la tabla de references anteriores Ubicación:

 create table Parent(ParentId integer not null, EmailAddress text not null, primary key(ParentId), unique(EmailAddress)); 

La tabla anterior está siendo referenceda por la tabla 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)); 

El niño de la table es el que estoy tratando de eliminar.

En este punto, toda la database está vacía y tiene "pragma foreign_keys = ON".

Mientras probaba un script para borrar la database, encontré un error al eliminar de la tabla vacía el elemento Child tenía una key foránea para la tabla (también vacía) Parent .

Cuando ejecuto el command delete from child (cuando ya está vacío), SQLite3 vuelve con el post de error "no coinciden las keys externas".

Esta es la parte vital del script de eliminación:

 delete from Child; delete from Parent; delete from Event; delete from Department; delete from Location; 

Vi algunas publicaciones aquí sobre la desactivación temporal de la compatibilidad con keys extranjeras, pero eso no tiene sentido para mí. Eso hace que todo el process de implementación de una relación de key externa sea innecesario.

La documentation (oculta en el código fuente) dice:

Una restricción de key externa requiere que las columnas de key en la tabla primaria estén colectivamente sujetas a una restricción ÚNICA o PRIMARIA. […] Si no se puede encontrar el índice requerido, ya sea porque:

  1. Las columnas key key mencionadas no existen, o
  2. Las columnas de key padre mencionadas existen, pero no están sujetas a una restricción UNIQUE o PRIMARY KEY, o
  3. No se proporcionaron columnas de key principal explícitamente como parte de la definición de key externa, y la tabla principal no tiene una PRIMARY KEY, o
  4. No se proporcionaron explícitamente columnas de key principal como parte de la definición de key externa, y la CLAVE PRIMARIA de la tabla padre consta de una cantidad de columnas diferente a la key secundaria en la tabla secundaria.

luego … se genera un error de "falta de coincidencia de key externa".

 > DELETE FROM Child; Error: foreign key mismatch > CREATE UNIQUE INDEX di ON Department(DepartmentId); > DELETE FROM Child; >