获取触发器信息

说明

最近在做数据资产管理平台,需要连接数据源获取元数据信息,触发器是其中的1种数据信息,现在把几类不同的数据库,通过SQL获取的方式整理出来。

MySQL

查询SQL

SHOW TRIGGERS

说明

字段名解释
Trigger触发器名称
Event触发事件
Table触发器是建立在哪张表上的
Statement触发时执行的SQL
Timing触发时机

查询结果展示

在这里插入图片描述

SQL Server

用于测试获取的环境是SQL Server 2017

查询SQL

select triggers.name   as [trigger_name],
       tables.name     as [table_name],
       triggers.is_disabled,
       case
         when triggers.is_instead_of_trigger = 1 then 'INSTEAD OF'
         when triggers.is_instead_of_trigger = 0 then 'AFTER'
         else null end as [is_instead_of_trigger],
       comments.text
from sys.triggers triggers
       inner join sys.tables tables on triggers.parent_id = tables.object_id,
     syscomments comments
where triggers.type = 'TR'
  and triggers.object_id = comments.id

说明

字段名解释
trigger_name触发器名称
table_name触发器是建立在哪张表上的
syscomments.text触发器SQL
is_instead_of_trigger触发器类型

syscomments表下的text保存创建触发器的SQL,sys.triggers表保存着触发器的一些基本信息

Oralce

查询SQL

select * from user_triggers

说明

字段名解释
TRIGGER_NAME触发器名称
TABLE_NAME触发器是建立在哪张表上的
TRIGGER_BODY触发器主体
TRIGGER_TYPE触发器类型
TRIGGERING_EVENT触发事件

查询结果展示

查询结果

PostgreSQL

查询SQL

select tgname, pg_class.relname table_name, pg_proc.proname, n.nspname, pg_proc.prosrc tgbody, pg_trigger.tgtype
from (pg_trigger join pg_class on tgrelid = pg_class.oid)
       join pg_proc on tgfoid = pg_proc.oid
       join pg_namespace n on pg_class.relnamespace = n.oid

说明

字段名解释
tgname触发器名称
table_name触发器是建立在哪张表上的
proname调用函数名称
nspname模式名称
tgbody触发器主体
tgtype触发器类型

tgtype看结果应该是触发器类型的code,不知道它的中文值是什么,没了解清楚PG的字典表是哪个。还有触发器也查着。

查询结果示例

PostgreSQL触发器查询结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值