2015-05-13 4 views
0

Я хотел бы знать, какие таблицы хранит создать заявление триггера, напримерPostgres триггеры

CREATE TRIGGER t_update_sal 
    AFTER INSERT OR UPDATE 
    ON employees 
    FOR EACH ROW 
    EXECUTE PROCEDURE t_update_sal_v1(); 

ответ

1

information_schema.triggers только хранит часть определения триггера.

Вы можете получить полный SQL для запуска с помощью pg_get_triggerdef():

select trg.tgname, 
     pg_catalog.pg_get_triggerdef(trg.oid, true) 
from pg_trigger trg 
    join pg_class tbl on trg.tgrelid = tbl.oid 
    join pg_namespace sch on tbl.relnamespace = sch.oid 
where tbl.relname = 'employees' 
    and sch.nspname = 'public' 
order by 1; 
2

Вы можете выкопать эту информацию на information_schema.triggers.

+0

спасибо вот что я искал – user2594853

0

Нет таблицы, в которой хранится «инструкция создания» для триггера как такового. SQL анализируется, выполняется и отбрасывается.

pg_dump повторно строит выписку из системы каталогов: в первую очередь pg_catalog.pg_trigger, с дополнительной информацией, извлеченной из pg_class, pg_attribute, pg_namespace и т.д.

Как Soni указывает, есть удобный интерфейс для этого в information_schema.triggers вид.