postgresql: ссылки на междоменные базы данных не реализованы: - программирование
Подтвердить что ты не робот

postgresql: ссылки на междоменные базы данных не реализованы:

Я пытаюсь преобразовать запрос внутреннего соединения SQL в запрос внутреннего соединения PostgreSQL. В этом внутреннем запросе соединения, в котором используются таблицы, все таблицы не присутствуют в одной базе данных. мы разделили таблицы на две базы данных, например, приложение db и security db

  1. пользователи и таблица разрешений присутствуют в security db
  2. userrolemapping и отдел присутствуют в приложении db

Я пробовал, как показано ниже, но я получаю следующую ошибку

ошибка

ERROR:  cross-database references are not implemented: "Rockefeller_ApplicationDb.public.userrolemapping"
LINE 4:         INNER JOIN "Rockefeller_ApplicationDb".public.userro..

Сохраненная функция SQL

SELECT   Department.nDeptID 
    FROM Users INNER JOIN Permission 
         ON Users.nUserID = Permission.nUserID INNER JOIN UserRoleMapping
         ON Users.nUserID = UserRoleMapping.nUserID INNER JOIN Department
         ON Permission.nDeptInst = Department.nInstID
         AND  Department.nInstID = 60
    WHERE     
         Users.nUserID = 3;

Сохраненная функция PostgreSQL

SELECT dep.ndept_id 
        FROM "Rockefeller_SecurityDb".public.users as  u 
        INNER JOIN  "Rockefeller_SecurityDb".public.permissions p ON u.nuser_id = p.nuser_id
        INNER JOIN "Rockefeller_ApplicationDb".public.userrolemapping as urm ON u.nuser_id = urm.nuser_id
        INNER JOIN "Rockefeller_ApplicationDb".public.department dep ON p.ndept_inst = dep.ninst_id
           AND  dep.ninst_id = 60
                        WHERE     
                            u.nuser_id = 3;
4b9b3361

Ответ 1

Вы не можете объединять таблицы из разных баз данных.

Базы данных в PostgreSQL логически разделены по замыслу.

Если вы хотите объединить таблицы, вы должны поместить их в разные схемы в одной базе данных, а не в разные базы данных.

Обратите внимание, что то, что называется "база данных" в MySQL, называется "схемой" в стандартном SQL.

Если вам действительно нужно объединить таблицы из разных баз данных, вам нужно использовать стороннюю оболочку данных.