有两个SQLite数据库互相引用

时间:2018-10-18 15:49:48

标签: sql sqlite

我对SQL非常陌生。我已经阅读了很多有关如何将两个不同的SQLite数据库连接或附加在一起的问题,但是使用任何一种描述的方法都没有成功。该问题可能是由于我对SQL的工作原理的误解,但问题出在这里:

我想创建两个不同的SQL数据库,一个用于站点的用户,一个用于在用户之间发送的消息。

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的原因。

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

预先感谢

1 个答案:

答案 0 :(得分:2)

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

不过,就您的数据模型而言:您真的需要使用两个数据库吗?为什么不能将属于MESSAGES数据库的USER表用作 only USER表?如果没有其他要求,您将能够创建该外键约束...