sql - 让两个 SQLite 数据库相互引用
问题描述
我对 SQL 很陌生。我已经阅读了一堆关于如何将两个不同的 SQLite 数据库连接或附加在一起的问题,但我没有使用所描述的任何方法获得成功。问题可能源于我自己对 SQL 工作原理的误解,但这里是:
我想创建两个不同的 SQL 数据库,一个用于站点用户,一个用于用户之间发送的消息。
db的架构users
(文件名:blog_users.sqlite)如下所示:
DROP TABLE IF EXISTS user;
CREATE TABLE user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password TEXT NOT NULL
);
我为数据库提出的架构messages
如下所示:
DROP TABLE IF EXISTS user;
DROP TABLE IF EXISTS message;
ATTACH DATABASE 'blog_users.sqlite' AS 'users';
CREATE TABLE user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL
);
CREATE TABLE message (
id INTEGER PRIMARY KEY AUTOINCREMENT,
author_id INTEGER NOT NULL,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
title TEXT NOT NULL,
body TEXT NOT NULL,
FOREIGN KEY (author_id) REFERENCES users.user (id)
);
创建消息的能力应该通过要求从users
数据库中提取的用户 ID 来限制,这就是我尝试使用FOREIGN KEY
.
有人可以解释我做错了什么,或者指出我正确的方向吗?
提前致谢
解决方案
据我所知,不能在属于不同数据库的表之间创建 SQLite 的外键约束。
但是,就您的数据模型而言:您真的需要使用两个数据库吗?为什么不能将属于 MESSAGES 数据库的 USER 表用作唯一的USER 表?如果不出意外,您将能够创建该外键约束......
推荐阅读
- vue.js - App.vue 和 index.html 是什么关系?
- python - 如何让 python 在哈希中打印一个右箭头?
- c - 如何在 Linux 源码中找到 PageDirty 函数或宏定义?
- kubernetes - 检查其他容器状态的优雅方式
- informix - 将日期时间小时到分钟的列数据选择为整数并将该值放入变量
- javascript - 带有布尔值的 javascript if 语句不起作用
- atom-editor - Atom 编辑器宏记录器
- botframework - 如何使用'Core-Bot'模板(v 4.4)在bot框架v4中拦截bot和用户之间的每个细节,如textfrom、textto、text?
- rxjs - 如何在 Angular2 中使用 RxJS 与 HATEOAS API 交互?
- web-services - 用于垃圾邮件检测的 Web 服务/Web 邮件网络逻辑