powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / DDL trigger: получить имя объекта?
6 сообщений из 6, страница 1 из 1
DDL trigger: получить имя объекта?
    #38560303
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь создать ddl trigger на создание таблицы.
Хочется получить имя вновь созданной таблицы, но в документации нет никаких констант передающихся в триггер кроме как tg_event, tg_tag.

Как в такой ситуации получить имя созданной таблицы?
...
Рейтинг: 0 / 0
DDL trigger: получить имя объекта?
    #38560346
йццй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sp,
в общем случае думаю пока никак

но в частном - попробуйте пропарсить возврат current_query()
...
Рейтинг: 0 / 0
DDL trigger: получить имя объекта?
    #38560354
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йццй,

ничего не дает - создание таблицы происходит в триггере...
...
Рейтинг: 0 / 0
DDL trigger: получить имя объекта?
    #38560363
йццй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spйццй,

ничего не дает - создание таблицы происходит в триггере...ну так я так и предполагал

но , по феншую, создание таблицы надо изолировать от "долгих транзакций"
т.е. вынести в автономию.
<многабукв, почему>

Т.е. в dblink (от супердба )
а тогда и current_query() начнёт возвращать текст дергаемого (из вашего триггера) в дблинке запрос.
что и требуется.
...
Рейтинг: 0 / 0
DDL trigger: получить имя объекта?
    #38560384
йццй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
йццй,
бггг, ещё один частный способ:

выглянуть из транзы (если ивент триггер честно работает до коммита ddl) через автономию (можно наверное не через дблинк, а через fdw к information_schema.tables) - посмотреть существующие закоммиченные таблички. сравнить внутри - с существуюшими в контексте триггера.

ваша табличка -- одна из тех, которых нет снаружи (если триггер отработал на create)
общность нарушается при создании более чем одной таблы в транзакции. (что плохо, плохо, плохо)
...
Рейтинг: 0 / 0
DDL trigger: получить имя объекта?
    #38560398
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йццй,

придумал другой костыль - табличка "созданные таблицы" c полем processed = false по-умолчанию
в триггере перед созданием таблицы заношу имя таблицы в "созданные таблицы" а в DDL триггере уже изучаю "созданные таблицы"
Но это костыль...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / DDL trigger: получить имя объекта?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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