我对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
的原因。
有人可以解释我做错了什么,还是指出正确的方向?
预先感谢
答案 0 :(得分:2)
据我所知,不能在属于不同数据库的表之间创建SQLite的外键约束。
不过,就您的数据模型而言:您真的需要使用两个数据库吗?为什么不能将属于MESSAGES数据库的USER表用作 only USER表?如果没有其他要求,您将能够创建该外键约束...