powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL внешний ключ на стороннюю базу данных
8 сообщений из 8, страница 1 из 1
PostgreSQL внешний ключ на стороннюю базу данных
    #38808490
featurelles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две базы данных.
Основная БД — содержит таблицу и строку, на которую следует ссылаться. (содержит идентификатор пользователя — первичный ключ)
Вторая БД — содержит таблицу, элемент которой, должен ссылаться на первичный ключ (id пользователя) таблицы, находящийся в «Основная БД».
Как это сделать? (как указать при создании таблицы, что следует ссылаться на значение поля,из другой бд )
...
Рейтинг: 0 / 0
PostgreSQL внешний ключ на стороннюю базу данных
    #38808508
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
featurelles,
никак

или скопировать пк в таблицу своей бд, (см "репликация") и сослаться на неё
...
Рейтинг: 0 / 0
PostgreSQL внешний ключ на стороннюю базу данных
    #38808510
featurelles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. внешние ключи только внутри одной базы данных можно делать?
...
Рейтинг: 0 / 0
PostgreSQL внешний ключ на стороннюю базу данных
    #38808516
kjgfnf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
featurelles,

"штатно" -- да

если конечно вы не путаете БД и schema
...
Рейтинг: 0 / 0
PostgreSQL внешний ключ на стороннюю базу данных
    #38808541
featurelles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боюсь задать глупый вопрос, но всёже.
Я хочу сделать сайт, с распределением БД по разным серверам. К примеру на сайте есть несколько проектов и я хочу разделить каждый из проектов, так чтоб их бд находились на разных серверах.
При этом у меня есть отдельный сервер с бд, на котором находятся регистрационные данные пользователей, и мне нужно чтоб сохранялась целостность между этими базами.
Т.е. все проекты на отдельных системах, должны указывать на главный сервер с рег. данными. (чтоб оттуда брались идентификаторы..). К сожалению не знаю как это реализовать.

Проект_1_БД ----\
Проект_2_БД --------> Главный сервер БД (идентификаторы)
Проект_3_БД ----/

Пока задуманное не могу даже на одной системе сделать. Тупо создал несколько баз данных, пытаюсь создать связи между таблицами.и нихрена....
А всё в одну базу пихать..не красиво.


Если кто , что может посоветовать...please help
...
Рейтинг: 0 / 0
PostgreSQL внешний ключ на стороннюю базу данных
    #38808777
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
featurelles, check/trigger dblink/fdw, типа того ...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
--create extension postgres_fdw;
--create server postgres_server foreign data wrapper postgres_fdw options (host '8.8.8.8', port '5494', dbname 'postgres');
--create user mapping for public server postgres_server options (password '');

--drop table if exists aa;
create table aa as select i as id, (random()*100)::numeric(10,2) as v from generate_series(1,2) as i;
alter table aa add constraint pk_aa primary key (id);

--drop foreign table if exists f_aa;
create foreign table f_aa (id int, v numeric(10,2)) server postgres_server options (table_name 'aa');

--drop function check_exists_aa(aa_id int) cascade;
create or replace function check_exists_aa(aa_id int) returns boolean language sql as
$$
  select coalesce((select count(*) from f_aa where id = aa_id), 0)=1;
$$;

--drop table if exists bb;
create table bb (id int, a_id int,  v numeric(12,2), constraint pk_bb primary key (id), constraint fk_chk_aa check(check_exists_aa(a_id)) );

insert into bb values (1,1, 0); --ok
insert into bb values (2,3, 0); --error

insert into f_aa values (3,100); 

insert into bb values (2,3, 0); --ok
...
Рейтинг: 0 / 0
PostgreSQL внешний ключ на стороннюю базу данных
    #38809186
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
featurelles,

dblink в помощь, да. Там можно создавать подключения к внешним серверам. Но FK не сделать на этом, только ручками писать триггера с проверками, иначе никак.
...
Рейтинг: 0 / 0
PostgreSQL внешний ключ на стороннюю базу данных
    #38809194
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
featurellesЕсть две базы данных.
Основная БД — содержит таблицу и строку, на которую следует ссылаться. (содержит идентификатор пользователя — первичный ключ)
Вторая БД — содержит таблицу, элемент которой, должен ссылаться на первичный ключ (id пользователя) таблицы, находящийся в «Основная БД».
Как это сделать? (как указать при создании таблицы, что следует ссылаться на значение поля,из другой бд )

задача не имеет корректного решения...
вот захотели в основной базе удалить строчку из таблицы на которую стоит ссылаться
и что дальше делать? идти на вторую базу которая может вообще не отвечать (связи нет например) и проверять не нарушится ли FK?

если очень хочется я бы подобную задачу решал бы репликацией таблицы с основной бд на вторую (третью и тд) бд и простановкой FK локально.

А в общем вы что то не то делаете. Если кластер георграфически распределенный - то эту задачу всеравно корректно нельзя решить без дикой потери производительности. Если все локально - 1 база и N схем (а тогда между ними FK нормально ставяться).

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL внешний ключ на стороннюю базу данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]