|
Триггер по событию: добавить триггер на новую таблицу
|
|||
---|---|---|---|
#18+
Приветствую! Народ, подскажите пожалуйста, может кто сталкивался... Необходимо к новой таблице, которую создает внешнее приложение, добавить триггер. Каким образом можно это сделать? Я решила сделать для этого триггер по событию и функцию для этого триггера, НО... не знаю как получить имя новой таблицы, только что созданной.. Например вот так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Далее - триггер по событию для этой функции ddl command start Есть еще сущность information_schema.tables, но как из нее получить новую строчку с именем новой таблицы,я не поняла-( На нее триггер сделать нельзя походу(а было бы удобно AFTER INSERT и взять NEW.table_name) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2017, 15:20 |
|
Триггер по событию: добавить триггер на новую таблицу
|
|||
---|---|---|---|
#18+
Нашла способ через таблицу, в которую пишется имя новой таблицы через триггер события,,, Теперь сама функция по добавлению триггера выглядит так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Но не работает, так как не может интерпретировать имя таблицы из NEW.tname. Пишет, что схема new не существует. Пробовала делать через переменную table_name(text), но тогда ругается, что нет таблицы table_name. То есть само значение table_name или NEW.tname туда не могу засунуть никак((( Подскажите кто-нибудь, что можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2017, 16:57 |
|
Триггер по событию: добавить триггер на новую таблицу
|
|||
---|---|---|---|
#18+
Alewteena1, Внутри триггера события нужно использовать функцию pg_event_trigger_ddl_commands. Именно из этой функции можно получить контекст команды, для которой триггер сработал. Обратите внимание, что функция возвращает набор строк, по которым нужно пройтись циклом. Пример, когда возвращается несколько строк - создание таблицы с первичным ключем. В этом случае триггер события сработает на CREATE TABLE, а функция вернет одну строку с command_tag='CREATE TABLE' и вторую с command_tag='CREATE INDEX'. Документация: https://postgrespro.ru/docs/postgresql/9.6/functions-event-triggers.html ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2017, 19:23 |
|
Триггер по событию: добавить триггер на новую таблицу
|
|||
---|---|---|---|
#18+
Павел Лузанов, Спасибо за ссылочку, почему-то сама не смогла найти этого, и почти решила уже эту задачу теми вышеописанными методами, остался маленький нюанс, но думаю, что справлюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2017, 09:27 |
|
|
start [/forum/topic.php?fid=53&fpage=70&tid=1996364]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 314ms |
total: | 436ms |
0 / 0 |