当前位置:嗨网首页>书籍在线阅读

05-查看触发程序

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

10.3.1 查看触发程序

触发程序创建后可以通过两种方法查看触发程序的定义、状态等信息。查看的方法分别为SHOW TRIGGERS和在系统表TRIGGERS中进行查看。

1.使用SHOW TRIGGERS语句查看触发程序信息

SHOW TRIGGERS [FROM db_name] [LIKE expr]

其中,LIKE expr待匹配的表达式(expr)会与触发程序定义时所在的表的名称相比较,而不与触发程序的名称相比较。

【范例10-3】

使用SHOW TRIGGERS查看范例10-2创建的触发程序。

mysql> show triggers like 'emp'\G 1.row Trigger: tri_emp Event: INSERT Table: emp Statement: begin if new.sal<5000 then set new.sal=5000; end if; end Timing: BEFORE Created: NULL sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITU TION Definer: root@localhost character_set_client: gbk collation_connection: gbk_chinese_ci Database Collation: utf8_general_ci row in set (0.00 sec)

查询结果中的参数如下。

⑴Trigger: 触发程序的名称。

⑵Event: 调用触发程序的时间。必须为“INSERT”“UPDATE”或“DELETE”之一。

⑶Table: 触发程序定义时对应的表。

⑷Statement: 当触发程序被调用时执行的语句。

⑸Timing:“BEFORE”或“AFTER”两个值之一。

⑹Created: 目前,本列的值为NULL。

2.在系统表TRIGGERS中出查看触发程序的信息

已定义好的触发程序的信息都存储在INFORMATION_SCHEMA库中的TRIGGERS表中,可以通过查看该表中的信息获取某个触发程序的信息。

查询语法如下。

SELECT*FROM INFORMATION_SCHEMA.TRIGGERS where condition

【范例10-4】

通过TRIGGERS表查看范例10-2创建的触发程序。

mysql> select * ->from INFORMATION_SCHEMA.TRIGGERS -> where trigger_name='tri_emp'\G;

结果如下。

TRIGGER_CATALOG: def TRIGGER_SCHEMA: studb TRIGGER_NAME: tri_emp EVENT_MANIPULATION: INSERT EVENT_OBJECT_CATALOG: def EVENT_OBJECT_SCHEMA: studb EVENT_OBJECT_TABLE: emp ACTION_ORDER: 0 ACTION_CONDITION: NULL ACTION_STATEMENT: begin if new.sal<5000 then set new.sal=5000; end if; end ACTION_ORIENTATION: ROW ACTION_TIMING: BEFORE ACTION_REFERENCE_OLD_TABLE: NULL ACTION_REFERENCE_NEW_TABLE: NULL ACTION_REFERENCE_OLD_ROW: OLD ACTION_REFERENCE_NEW_ROW: NEW CREATED: NULL SQL_MODE: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SU BSTITUTION DEFINER: root@localhost CHARACTER_SET_CLIENT: gbk COLLATION_CONNECTION: gbk_chinese_ci DATABASE_COLLATION: utf8_general_ci 1 row in set (0.18 sec)

上述结果中:TRIGGER_SCHEMA为触发程序所在的数据库名称;TRIGGER_NAME为触发程序的名字;EVENT_MANIPULATION列含有下述值之一,即INSERT、DELETE或UPDATE,为用户的触发动作;EVENT_OBJECT_SCHEMA和EVENT_OBJECT_TABLE为相应的数据库和触发程序相关的表名。