首页 > 解决方案 > 让两个 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.

有人可以解释我做错了什么,或者指出我正确的方向吗?

提前致谢

标签: sqlsqlite

解决方案


据我所知,不能在属于不同数据库的表之间创建 SQLite 的外键约束。

但是,就您的数据模型而言:您真的需要使用两个数据库吗?为什么不能将属于 MESSAGES 数据库的 USER 表用作唯一的USER 表?如果不出意外,您将能够创建该外键约束......


推荐阅读