0

データベースごとに常に 1 つの 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 ITEM ID

A1
A2
A3
B1

SQL Web サイトから SOLR を検索するときに、次のクエリを実行できるように、プレフィックスを定義する単一のテーブルを用意しても問題ありませんか。

database (name) + item (id) = SolrID
4

1 に答える 1

2

たとえば、データベース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ステートメントを記述できます。

SELECT solrid(id), name FROM item;

これはよりクリーンなソリューションのようです。

于 2013-02-05T12:59:41.373 に答える