SQLite3 中是否有任何方法可以在主数据库中拥有引用附加数据库中的列的外键(反之亦然?)
我希望在多个进程之间共享附加的(只读)数据库,每个进程都有自己的(读/写)主数据库。
我像这样创建父表(在数据库“ParentDB”中):
create table Parent (id integer primary key);
现在我在主数据库中尝试这个:
attach 'parent.sqlite3' as ParentDB;
create table Child (id integer not null references Parent (id),
constraint PK_Child primary key (id));
insert into ParentDB.Parent (id) values (42);
当我尝试它时,它创建的外键没有错误。现在我尝试在子表中插入一行:
insert into Child (id) values (42);
我收到此错误:
Error: no such table: main.Parent
所以它似乎总是假设父表和子表属于同一个数据库。
还有外键语法不允许指定父表属于哪个数据库 https://stackoverflow.com/a/6704466/12048.
有解决方法吗?
这个问题 https://stackoverflow.com/q/6703186/12048是相关的,但这里父表和子表都位于同一个附加数据库中,而我将它们放在单独的数据库中。
SQLite 的内置外键约束不能跨数据库工作。
唯一的解决方法是手动编写执行相同检查的检查约束和触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)