SQLite3 non supporta i vincoli di chiave esterna?

Ho un problema con SQLITE3.

Ho creato 2 tabelle di persons e orders utilizzando il seguente script SQL:

 sqlite> create table Persons( P_Id int primary key, LastName varchar, FirstName varchar, Address varchar, City varchar ); sqlite> create table Orders( O_Id int NOT NULL, OrderNo int NOT NULL, P_Id int, PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) ); sqlite> insert into Orders values(1,77895,3); sqlite> select * from Orders; 1|77895|3 sqlite> 

Anche se la tabella delle persone è vuota, le righe possono essere inserite nella tabella degli orders .

Non mostra alcun errore.

Com’è ansible.

In SQLite 3.x, è necessario effettuare la seguente query ogni volta che ci si connette a un database SQLite:

 PRAGMA foreign_keys = ON; 

Altrimenti, SQLite ignorerà tutti i vincoli di chiave esterna.

Perché ogni volta? Compatibilità all’indietro con SQLite 2.x, secondo la documentazione .

In SQLite 4.x, i vincoli FK saranno abilitati per impostazione predefinita .

Supporto per chiave esterna SQLite

 sqlite> PRAGMA foreign_keys = ON; 

Ciò consentirà il vincolo di chiave esterna.

Controlla se hai vincoli di chiave esterna abilitati nel tuo SQLite: http://sqlite.org/foreignkeys.html#fk_enable

Hai letto la documentazione? La pagina principale dice che è stata introdotta con la versione 3.6.19. Il link mostra come usare le chiavi esterne (il tuo codice è corretto).

Il tuo codice fornisce eventuali messaggi di errore che hai omesso? Hai controllato tutte le precondizioni specificate nella documentazione?