正如前面评论中提到的(用数据库替换单词模式,因为您有单独的数据库),在不同的数据库中不可能引用外键。但是,您可以在来自不同数据库的表中应用联接。要访问任何数据库中的数据,您只需要使用database.table_name 之类的数据库名称更新查询。只需确保用户对这两个数据库都有权限。
您将无法在数据库级别维护外键约束,但您可以创建将引用列的值存储在另一个数据库中的列(仅存储不实际引用的值)。稍后在检索时使用此列进行连接。示例如下:
假设有 2 个数据库 organization 和 broker。用户some_user_name 对这两个数据库都有权限。让我们在broker 数据库中创建一个表users:
CREATE TABLE "users" (
"user_id" INT NULL,
"user_name" VARCHAR(50) NULL
);
插入一个虚拟记录:
INSERT INTO users (user_id, user_name) values (1, 'Kamal');
现在,让我们在organization 数据库中创建表:
CREATE TABLE "app_log" (
"log_id" INT NULL,
"log_message" VARCHAR(100) NULL,
"user_id" INT NULL,
"log_date" DATETIME NULL
);
插入一个虚拟记录:
INSERT INTO app_log ("log_id", "log_message", "user_id", "log_date") VALUES ('1', 'sample log message', '1', '2018-01-26T06:50:48.000');
现在,我们可以在user_id 列上使用连接查询:
SELECT u.user_name, l.log_message
FROM broker.users u INNER JOIN organization.app_log l ON u.user_id = l.user_id
WHERE l.log_date >= CONVERT(DATETIME, '2018-01-26', 102);
希望对你有帮助!!