gpt4 book ai didi

sql - 在数据库中存储数据库引用

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:28 25 4
gpt4 key购买 nike

我希望能够从数据库而不是我的应用程序中用单个值(即它的名称)来标记数据库,因为它始终是每个数据库的一个 ID。例如,像这样:

DATABASE_A.sql

-- Database Name Table
CREATE TABLE database (
name VARCHAR(10) NOT NULL UNIQUE,
);

CREATE TABLE item (
id SERIAL PRIMARY KEY,
name VARCHAR(10) NOT NULL UNIQUE,
);

Insert Into database (name) values ('A');

DATABASE_B.sql

-- Database Name Table
CREATE TABLE database (
name VARCHAR(10) NOT NULL UNIQUE,
);

CREATE TABLE item (
id SERIAL PRIMARY KEY,
name VARCHAR(10) NOT NULL UNIQUE,
);

Insert Into database (name) values ('B');

这是因为当它们组合并存储在 SOLR 搜索服务器上时,它们的 ID 是它们的数据库名称和它们的项目 ID 的组合,例如:

SOLR 项目 ID

A1
A2
A3
B1

是否可以用一个表来定义前缀,这样当我从我的 SQL 网站查找到 SOLR 时,我可以只执行以下查询:

database (name) + item (id) = SolrID

最佳答案

我更倾向于在包含数据库 ID 的每个数据库中构建一个过程,例如:

CREATE OR REPLACE FUNCTION solrid(IN local_id INTEGER, OUT result TEXT) AS $$
DECLARE
database_id TEXT := 'A';
BEGIN
result := database_id || local_id::TEXT;
END;
$$ LANGUAGE PLPGSQL;

然后你可以这样写你的选择语句:

SELECT solrid(id), name FROM item;

这似乎是一个更清洁的解决方案。

关于sql - 在数据库中存储数据库引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14707843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com