Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 主数据库中的外键引用附加数据库_Sqlite_Foreign Keys - Fatal编程技术网

Sqlite 主数据库中的外键引用附加数据库

Sqlite 主数据库中的外键引用附加数据库,sqlite,foreign-keys,Sqlite,Foreign Keys,在SQLite3中,有没有办法在引用附加数据库中的列的主数据库中使用外键(反之亦然) 我希望在多个进程之间共享附加的(只读)数据库,每个进程都有自己的(读/写)主数据库 我像这样创建父表(在数据库“ParentDB”中): 现在我在主数据库中尝试以下操作: attach 'parent.sqlite3' as ParentDB; create table Child (id integer not null references Parent (id),

在SQLite3中,有没有办法在引用附加数据库中的列的主数据库中使用外键(反之亦然)

我希望在多个进程之间共享附加的(只读)数据库,每个进程都有自己的(读/写)主数据库

我像这样创建父表(在数据库“ParentDB”中):

现在我在主数据库中尝试以下操作:

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
因此,似乎总是假定父表和子表属于同一个数据库

还有外键语法

有解决办法吗



是相关的,但这里的父表和子表都在同一个附加数据库中,而我将它们放在单独的数据库中。

SQLite的内置外键约束不能跨数据库工作


唯一的解决方法是手动编写执行相同检查的检查约束和触发器。

根据SQLite文档,触发器只能对与更改的表位于同一数据库中的表进行操作。请参阅此处标题为“触发器中更新、删除和插入语句的语法限制”的部分:
Error: no such table: main.Parent