如何在postgresql中检查哪个表被调用?

时间:2016-11-09 11:40:54

标签: postgresql

我的数据库中有十个表和五个触发器。我不知道触发器名称,但我需要编辑触发器。所以我需要知道哪个表被调用到哪个触发器?使用,

SELECT tgname 
FROM pg_trigger;

我们可以打印所有的触发器名称。但它没有显示哪个表被调用到哪个触发器。有谁可以向我解释一下?

2 个答案:

答案 0 :(得分:2)

以下查询用于从informational_schema获取有关触发器的信息。

select * from information_schema.triggers;

以上命令显示了trigger_catalog,trigger_schema,trigger_name,event_manipulation,event_object_schema,event_object_table,action_statement,action_timing。

当我们使用以下命令时,它只显示"触发器名称和表名"。

test=> select trigger_name, event_object_table from information_schema.triggers;
      trigger_name       | event_object_table 
-------------------------+--------------------
 employees_trig1         | employees
 emp_audit               | emp_view
 add_log_current_trigger | account_current
 employees_trig2         | employees
 emp_audit               | emp_view
 add_log_current_trigger | account_current
 last_name_changes       | employees
 last_name_changes       | employees
 employees_trig1         | employees
 emp_audit               | emp_view
 add_log_current_trigger | account_current
(11 rows)

答案 1 :(得分:0)

您可以使用以下查询,它将显示用户定义的触发器及详细说明。

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers ORDER BY event_object_table,event_manipulation;

它将提供触发器名称,表名称,事件操作,操作和操作时间。