SQLite version 3.7.9 2011-11-01 00:52:41
sqlite> PRAGMA foreign_keys = 1;
sqlite> CREATE TABLE foo(name);
sqlite> CREATE TABLE bar(foo_rowid REFERENCES foo(rowid));
sqlite> INSERT INTO foo VALUES('baz');
sqlite> SELECT rowid, name FROM foo;
1|baz
sqlite> INSERT INTO bar (foo_rowid) VALUES (1);
Error: foreign key mismatch
Perché si verifica questo errore? Si tratta di una DML error, ma non so cosa c'è di sbagliato in quanto:Perché il riferimento a un rowid SQLite causa una mancata corrispondenza della chiave esterna?
foo
esiste.foo.rowid
esiste.foo.rowid
è la chiave primaria difoo
e pertanto vincolata all'unicità.bar.foo_rowid
è una colonna, che corrisponde al fatto chefoo.rowid
è una colonna.
Ed è persino possibile nominare tale PK 'rowid'. –
Ho un errore che dice: _prima mancata corrispondenza della chiave - "child_table" che fa riferimento a "parent_table" _. Ho fatto quello che hai detto ma ancora non funziona .. –
D'altra parte, 'Se una tabella contiene una colonna di tipo INTEGER PRIMARY KEY, allora quella colonna diventa un alias per ROWID. Da https: //www.sqlite. org/autoinc.html –