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

2024-02-29

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(使用前将#替换为@)

主数据库中的外键引用附加数据库 的相关文章

  • 无法找到来源:错误 [root] 错误:无法找到由“..”标识的修订版本

    我正在尝试从命令行运行迁移并不断收到错误 ERROR root Error Can t locate revision identified by faf3ebfbe667 正如其他帖子中所建议的 我删除了我的 sqlite 数据库和迁移文
  • 无法读取第 0 行,第 -1 列

    我正在尝试复制使用 SQLite 管理器创建的数据库 我在其中执行了以下操作 CREATE TABLE android metadata locale TEXT DEFAULT en US and INSERT INTO android m
  • 如何在 SQLite 中检查数据库是否存在 C#

    我目前正在用 C 编写一个应用程序 并使用 sqlite 作为嵌入式数据库 我的应用程序在启动时创建一个新数据库 但如何让它检查数据库是否存在 如果它确实存在 我如何让它使用它 如果不存在如何创建一个新数据库 这是我到目前为止所拥有的 pr
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • Android:将声音保存为铃声/SQLiteConstraintException

    我正在尝试使用 Android 将声音保存为铃声this http www stealthcopter com blog 2010 01 android saving a sound file to sd from resource and
  • Android 上的 SQLite JDBC 驱动程序

    我正在尝试使用xerial sqlite jdbc在 Android 中管理我的数据库没有成功 我得到了java lang NoClassDefFoundError org sqlite SQLiteConnection异常 我已经导入了这
  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • SugarORM 错误或缺少数据库

    我尝试让 Android 项目与 SugarORM 一起使用 但是 我遇到了以下错误 引起原因 android database sqlite SQLiteException 没有这样的表 DOCUMENT 代码1 编译时 INSERT O
  • Python Tkinter 自动完成组合框与 LIKE 搜索?

    我正在尝试使用预定义的值填充 Tkinter 组合框以供选择 它正在填充 我可以输入并获得建议 然而 为了做到这一点 我必须明确知道前几个字符 如果我知道字符串中间或末尾的一些文本 它是没有用的 因为组合框只执行 LIKE 搜索而不是 LI
  • PHP 5 的 SQLite 编译设置是什么?

    SQLite 3 7 附带了新的预写日志记录 WAL http www sqlite org wal html并且有很多设置可以被配置 http www sqlite org compile html 但是 似乎没有任何方法可以改变任何事情
  • Android - 将值从 sqlite 数据库加载到数组列表

    我是安卓新手 我有一个使用 SQLite DB 的应用程序 我需要将值从数据库推送到对象类型的数组列表 我使用的代码在这里给出 private ArrayList
  • sqlite 增量真空仅删除一个空闲页面

    我已将 sqlite 数据库的 auto vacuum PRAGMA 值更改为 INCRMENTAL 当我跑步时PRAGMA incremental vacuum 通过 DB Browser for SQlite 应用程序 它释放了free
  • 如何将 php Web 应用程序转换为桌面应用程序并保留数据库 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有一个用 PHP 开发的 Web 应用程序 但大多数客户并没有一直连接到互联网 那么 有没有办法将应用程序转换为桌面应用程序 以便
  • 如何在我的 iOS 项目中添加和执行 .sql 文件?

    我找到了很多关于在 iOS 中使用 SQLite 数据库的教程 但没有找到任何直接引用 sql 文件的内容 谁能告诉我如何将现有的 SQL 数据库链接到我的应用程序 编辑 这是一个 MySQL 转储 我们有一个基于浏览器的抽认卡程序 现在我
  • cv2.imdecode 始终返回 None

    我正在从存储 JPEG 图像的 sqlite BLOB 读取二进制数据 sqlite3 Binary 图像被写入数据库 img cv2 imread images image jpg c execute INSERT INTO pictur
  • 如何在Android中访问现有的sqlite数据库?

    到目前为止 我们已经在 Android 中开发了在运行时创建数据库的应用程序 我们想知道如何在 Android 应用程序中访问预构建或现有的数据库 sqlite 文件 请提供详细信息 查看文档android database sqlite
  • 多级排序

    我有一个表 其中包含一些记录 其中包含名称 评级等字段 我首先想要根据评级将结果限制为 20 进行排序 然后在此结果集上想要进一步应用基于名称的排序 我知道要排序我们需要使用像这样的查询 Select from table order by
  • 了解 FTS3/FTS4:什么是虚拟表并从中搜索具有可搜索的非虚拟表?

    阅读 SQLite3 的 FTS3 FTS4 文档的第一部分后 我现在感到非常困惑 我感到困惑的原因是散布在网络上的示例 我相信它没有涵盖所有可能的用例 另一个原因是我目前所处的情况 话虽如此 我有一个名为 Note 的表 其中包含两个类型
  • 为什么在将 SQLite Nuget 包添加到 LINQPad 时收到 DllNotFoundException?

    我已经添加了System Data SQLite CoreNuGet 包到我的 LINQPad 5 Query Premium 然后尝试执行以下命令 new SQLiteConnection memory Dump 但我得到 DllNotF
  • 尝试重新打开已关闭的对象:sqlitequery

    所以本质上我查询数据库两次 我不明白这个错误真正来自哪里 因为我没有在任何地方关闭数据库 返回错误的代码是这样运行的 我查了一下 刚刚看到一个像我这样的案例 BeaconHandler pullAllDB new BeaconHandler

随机推荐