У меня есть база данных с именемподражатьна моемБД постгрес. Я пытаюсь выполнить эту команду:
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='...'
.