关系表名不存在 - PostgreSQL

关系表名不存在 - PostgreSQL

我有一个名为的数据库模仿在我的postgres 数据库。我正在尝试执行此命令:

select hadm_id from admission_ids where hadm_id in (select distinct on (subject_id) hadm_id from (select * from admissions order by admittime) tt

但我收到此错误: 关系“录取”不存在 当我通过将 admissions 更改为 mimic iii.admissions 来修改查询时,它可以工作。知道 mimic iii 是模式,当我键入此查询时,会出现以下结果:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'mimiciii';
     table_name     
--------------------
 admissions
 callout
 caregivers
 datetimeevents
 ...

我的问题是,我该怎么做才能让用户只输入表的名称,而不使用 schema.tableName ?

答案1

我的问题是,我该怎么做才能让用户只输入表的名称,而不使用 schema.tableName ?

通过将架构放入您的search_path

除了SET search_path TO ...在会话持续期间有效之外,还可以使用 将其设置为每个用户的永久属性ALTER USER username SET search_path='...',或者使用 将其设置为每个数据库的 永久属性ALTER DATABASE dbname SET search_path='...'

相关内容