目标是 (1)创建一个连接,(2)返回另一个数据库的视图,以及 (3)关闭所有要存储在视图中的同一个连接(没有存储过程或嵌入式密码)。我想出了以下代码,它使用信任帐户并且似乎可以工作,直到过滤布尔字段。搜索false
(field=false) 有效,但搜索true
(field=true) 或IS NOT NULL
提示输入密码。
返回数据时不需要密码真的很奇怪,但是在过滤时,那就是需要密码的时候。
PostgreSQL: v8.4:
v_sessions
),它包含两个字段:文本字段和布尔字段,它是用CASE
语句创建的。从 db_local(作为 md5_user)中:
-- Creates okay:
CREATE VIEW v_sessions AS
SELECT * FROM (
select '1' query_type,'' as username, false as is_logged_in
from dblink_connect_u('connection', 'host=development dbname=db_remote user=trusted_user')
union
select '2' query_type, username, is_logged_in
from …
Run Code Online (Sandbox Code Playgroud) 除了手动搜索触发器/函数/存储过程中使用的所有 dblink() 之外,还有没有办法查询这些信息?
示例:触发器内部有一个 dblink,我可以从 postgres 模式中选择一些可以识别它的内容吗?
我认为这是手动操作,但只是为了确保我没有遗漏任何东西。
注意:我有一些日志记录,我也在寻找 dblink()
我正在尝试创建一个 DBLink。SQL Developer 是我正在使用的客户端。我的远程用户的密码中包含 *。我很难弄清楚这一点。此语法不起作用:
CREATE DATABASE LINK my_link
CONNECT TO daniel identified by *password
USING 'hostname:port/servicename';
Run Code Online (Sandbox Code Playgroud)
我尝试了 '\' 并将密码包装在 {}'s,' 中,但无济于事。我收到“命令未正确结束”错误。任何建议都会有所帮助。我知道这是一个简单的问题,但无法通过谷歌搜索来解决。