powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / обращение к таблицам в схемах
11 сообщений из 11, страница 1 из 1
обращение к таблицам в схемах
    #34862697
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Имеем 3 схемы shema1, shema2, shema3.
В shema1, shema2, соответственно имеем по 3 таблицы: table11, table12, table13, table21, table22, table23. Теперь, чтобы писать запросы, мы вынуждены делать примерно так:
select * from shema1.table11;
мне нужно, чтобы писать запросы select * from table11;
т.е. в терминологии Oracle создать public synonym.
В PostgreSQL на сколько я знаю можно сделать SET search_path TO shema1, public;
Но это работает только в рамках группы запросов.
Проблема вот еще какая. переносим таблицы из shema1 в shema3. В Oracle меняем public symonym и все, все OK. В Postgre получается, нужно переправить кучу запросов...

Думаю, вопрос понятен. Как в PostgreSQL сделать то, что в Oracle именуется public synonym?

заранее всем спасибо за ответы.
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34862721
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Zhukov
Думаю, вопрос понятен. Как в PostgreSQL сделать то, что в Oracle именуется public synonym?

Как сделать - не знаю.
У Вас неверное представление о SET SEARCH_PATH. Его можно проставлять для юзера в том числе.
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34862746
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron Dmitry Zhukov
Думаю, вопрос понятен. Как в PostgreSQL сделать то, что в Oracle именуется public synonym?

Как сделать - не знаю.
У Вас неверное представление о SET SEARCH_PATH. Его можно проставлять для юзера в том числе.

А подробнее можно, что вы имеете в виду? и как это может помочь?
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34863191
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Zhukov Andrey Daeron Dmitry Zhukov
Думаю, вопрос понятен. Как в PostgreSQL сделать то, что в Oracle именуется public synonym?

Как сделать - не знаю.
У Вас неверное представление о SET SEARCH_PATH. Его можно проставлять для юзера в том числе.

А подробнее можно, что вы имеете в виду? и как это может помочь?
Попробую. В ПГ нет паблик синонимов (на сколько мне известно). Поскольку и паблика-то никогого нет немного разная иделогия.

У Вас, по сути, две проблемы:
1. Уход от указания имени схемы в запросах. Это решается
Код: plaintext
1.
2.
3.
  ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }
в частности
  ALTER USER pg_user SET SEARCH_PATH=shema1, shema2, shema3, public;
2. Перенос таблицы из shema1 в shema3. Тут сложнее. Если перенос - это таки перенос, с DROP TABLE в первой схеме, то все ОК. Если же таблицы и там и там, и нужно как-то переключатся - то я простого решения не вижу.

Еще вариант, сделать спец.схему public_tables, в коорой сделать таблицы и рули на SELECT которые бы разруливали бы из какой схемы нужно брать данные.
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34863284
> Как в PostgreSQL сделать то, что в Oracle именуется public synonym?

Никак. Но можно search path определить в конфиге для всех пользователей.

А вообще вопрос "как сделать как в Oracle" - это плохой вопрос. PostgreSQL вполне самодостаточная СУБД, чтобы иметь похожие на что-то костыли. Я не могу придумать ни одной задачи, где необходимо было бы использовать описанный вами подход.
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34863291
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey DaeronПеренос таблицы из shema1 в shema3. Если перенос - это таки перенос, с DROP TABLE в первой схеме, то все ОК.даже без drop

ALTER TABLE name SET SCHEMA new_schema
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34864961
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron Dmitry Zhukov Andrey Daeron Dmitry Zhukov
Думаю, вопрос понятен. Как в PostgreSQL сделать то, что в Oracle именуется public synonym?

Как сделать - не знаю.
У Вас неверное представление о SET SEARCH_PATH. Его можно проставлять для юзера в том числе.

А подробнее можно, что вы имеете в виду? и как это может помочь?
Попробую. В ПГ нет паблик синонимов (на сколько мне известно). Поскольку и паблика-то никогого нет немного разная иделогия.

У Вас, по сути, две проблемы:
1. Уход от указания имени схемы в запросах. Это решается
Код: plaintext
1.
2.
3.
  ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }
в частности
  ALTER USER pg_user SET SEARCH_PATH=shema1, shema2, shema3, public;
2. Перенос таблицы из shema1 в shema3. Тут сложнее. Если перенос - это таки перенос, с DROP TABLE в первой схеме, то все ОК. Если же таблицы и там и там, и нужно как-то переключатся - то я простого решения не вижу.

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

ООО! Спасибо! Это в принципе то, что надо!
А про спец. схему я бы хотел Вас попросить рассказать поподробнее, если можно. А совсем идеально - с примерчиком. Спасибо!
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34864974
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PostreSQL начинающий> Как в PostgreSQL сделать то, что в Oracle именуется public synonym?

Никак. Но можно search path определить в конфиге для всех пользователей.

А вообще вопрос "как сделать как в Oracle" - это плохой вопрос. PostgreSQL вполне самодостаточная СУБД, чтобы иметь похожие на что-то костыли. Я не могу придумать ни одной задачи, где необходимо было бы использовать описанный вами подход.

Я согласен с Вами, что PostgreSQL - самодостаточная и развитая СУБД, но, согласитесь, в том же Oracle есть приятные мелочи (например, пакеты), которые в случае интенсивного серверного программирования помогают. Честно сказать, при попытке придумать задачу, где позарез нужны public synonym, пришел в тупик - в принципе все можно решить штатными средствами PostgreSQL. Но, согласитесь, public synonym - это приятно :)
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34865629
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Zhukov
А про спец. схему я бы хотел Вас попросить рассказать поподробнее, если можно. А совсем идеально - с примерчиком. Спасибо!
Примерчик на скору руку не сваяю. Может на следующей неделе. А идея простая. В PG есть великолепный механизм рулей. Берется схема pg_my_public_synonym. Для всех юзверей она идет первой в поисковой схеме. В этой схеме создаются вьюшки с публичными именами. Пусть например my_funk_table, которая будет делать просто SELECT * FROM schema1.my_funk_table. Точнее, если мне память не изменяет, то PG не держит * во вьюшках перчень полей. И таким образом все селекты будут делаться из этой вьюшки. Ну а вьюшку перекидывать со схемы на схему. Далее. Кроме селектов возможно нужно делать что-то еще, и для этого я предлагаю использовать систему рулей.
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34865648
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey Daeron Dmitry Zhukov
А про спец. схему я бы хотел Вас попросить рассказать поподробнее, если можно. А совсем идеально - с примерчиком. Спасибо!
Примерчик на скору руку не сваяю. Может на следующей неделе. А идея простая. В PG есть великолепный механизм рулей. Берется схема pg_my_public_synonym. Для всех юзверей она идет первой в поисковой схеме. В этой схеме создаются вьюшки с публичными именами. Пусть например my_funk_table, которая будет делать просто SELECT * FROM schema1.my_funk_table. Точнее, если мне память не изменяет, то PG не держит * во вьюшках перчень полей. И таким образом все селекты будут делаться из этой вьюшки. Ну а вьюшку перекидывать со схемы на схему. Далее. Кроме селектов возможно нужно делать что-то еще, и для этого я предлагаю использовать систему рулей.

Да, идея красивая, мне очень нравится, но возникает вопрос... как быть с insert, update, delete ??? :)
ну и всякими хранимыми процедурками :)
спасибо...
...
Рейтинг: 0 / 0
обращение к таблицам в схемах
    #34865808
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Zhukov
Да, идея красивая, мне очень нравится, но возникает вопрос... как быть с insert, update, delete ??? :)
ну и всякими хранимыми процедурками :)
спасибо...
Система рулей. Я не зря о ней много-много раз упомянал .
Для ХП-шек нужно смотреть откуда они будут брать данные.
Паблик синонимы для ХП-шек можно сделать примерно также.

ЗЫ Только вот я бы все-таки трижды подумал нужно ли такое счастье. А то может оно и не счастье вовсе, а только головняк непомерный? И простого перекидывания схем для юзерей хватит?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / обращение к таблицам в схемах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]