当前位置: 首页 > 知识库问答 >
问题:

未实现跨数据库引用:

戴正阳
2023-03-14

我正在尝试将SQL内部联接查询转换为PostgreSQL内部联接查询。在此内部联接查询中,哪些表正在使用,而不是所有表都存在于一个数据库中。我们将表分为两个数据库,即应用数据库和安全数据库

  1. 安全数据库中存在用户和权限表

我试着像下面一样,但我得到以下错误

错误

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;

共有3个答案

华谭三
2023-03-14

我对Postgres和JpaRepo也有同样的问题,我只是删除了dbname。查询中的公共

郭修平
2023-03-14

对于将来的搜索,可以使用dblink连接到其他数据库。

遵循以下命令:

create extension dblink;

SELECT dblink_connect('otherdb','host=localhost port=5432 dbname=otherdb user=postgres password=???? options=-csearch_path=');

SELECT * FROM dblink('otherdb', 'select field1, field2 from public.tablex')
AS t(field1 text, field2 text);
巩阳秋
2023-03-14

不能联接来自不同数据库的表。

数据库在PostgreSQL中按设计进行逻辑分隔。

如果要联接这些表,应该将它们放在一个数据库中的不同模式中,而不是放在不同的数据库中。

请注意,MySQL中所谓的“数据库”在标准SQL中称为“模式”。

如果确实需要连接来自不同数据库的表,则需要使用外部数据包装器。

 类似资料:
  • 我正在尝试创建一个数据库,然后在其中创建一个表。我使用docker-compose.yml在一个sql文件中编写了查询,以便与postgres图像一起使用 当我尝试使用docker compose build,然后使用docker compose up时,我得到一个错误 “psql:/docker entrypoint initdb.d/init.sql:18:错误:未实现跨数据库引用:“real

  • 一切正常,但DatabaseReference无法获取数据,这就像是忽略了我的代码运行,就像我的internet无法运行一样,请帮助我,我是这个社区的新手,下面是我的代码和图片。 以前它是工作的,但由于我只是更改了一些代码,使只有currentVersion>=vCode,这样即使数据库中的值是 firebase数据库映像 mainactivity.java manifest.xml 依赖关系

  • 问题内容: 在多个数据库之间保持引用完整性的最佳实践是什么?因为没有内置功能 还是对单个数据库进行分区更好? 更新 请参见下面的kevin的示例。那是我的情况。我的库存数据库具有引用雇员数据库中的employeeId的表。 这些数据库当前维护在不同的位置(不同的服务器) 问题答案: 使用2k05 / 2k08,最好对单个数据库进行分区。您拥有将数据存储在多个数据库中的所有好处,同时能够使用单个数据

  • 我使用Android Studio Beta 1与和。我还启用了数据绑定: 但不幸的是,Kotlin类看不到从布局生成的类,因为我会遇到如下错误: 错误:(17,31)未解析的引用:数据绑定 错误:(39,36)未解决的引用:MyFragment绑定 当然,Java类可以看到这些生成的类。

  • 我正在尝试在table of数据库与table of数据库之间创建外键: 用户id int(10)未签名的编号 Id int(10)无符号编号 我创建了查询 "外键约束格式错误"有人能帮助我如何实现这一点吗?

  • 我整晚都在做这个,快把我逼疯了。它应该很简单,但它不起作用。这适用于Oracle,但不适用于MySQL,我创建了类似的数据库。使用-f选项提供给logstash的配置。 } 输出{stdout{codec= } 一旦我运行了logstash,它就不会将数据加载到弹性搜索索引中。当我执行以下操作时,我甚至看不到名为visitDb的索引。 curl'localhost:9200/_cat/索引?v'

  • 本文向大家介绍Oracle如何实现跨库查询,包括了Oracle如何实现跨库查询的使用技巧和注意事项,需要的朋友参考一下 实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中。 二. 实现方法步骤:     1. 创建存储过程     2. 在存储过程中先创建database link    

  • 如果不需要打开shell执行create index,直接在程序源代码里就能指定数据库索引,是不是很酷? 是的,利用bugu-mongo,你只需在程序里加上个@EnsureIndex注解,即可实现该功能。 以一个简单的新闻系统为例: @Entity @EnsureIndex("{type:1}") public class News implements BuguEntity{ @Id