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
なぜこのエラーが発生するのですか? これはDML エラーですが、次の理由により何が問題なのかわかりません。
foo
存在します。foo.rowid
存在します。foo.rowid
の主キーであるfoo
ため、一意性が制約されます。bar.foo_rowid
は 1 列であり、1 列であるという事実と一致しfoo.rowid
ます。