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
Dlaczego ten błąd występuje? Jest to DML error, ale nie wiem, co się stało, ponieważ:Dlaczego odwoływanie się do wiersza polecenia SQLite powoduje niezgodność klucza obcego?
foo
istnieje.foo.rowid
istnieje.foo.rowid
jest kluczem podstawowymfoo
i dlatego jest ograniczony do wyjątkowości.bar.foo_rowid
to jedna kolumna, która odpowiada faktowi, żefoo.rowid
jest jedną kolumną.
A nawet można nazwać PK 'rowid'. –
Mam błąd z informacją: _ niepoprawny klucz niezgodny - "child_table" odwołujący się do "parent_table" _. Zrobiłem to, co powiedziałeś, ale nadal nie działa. –
Z drugiej strony, 'Jeśli tabela zawiera kolumnę typu INTEGER PRIMARY KEY, wówczas ta kolumna staje się aliasem dla ROWID." Z https: //www.sqlite. org/autoinc.html –