ภาพรวม
MySQL จัดเก็บข้อมูล Trigger ไว้ในฐานข้อมูลระบบ information_schema สามารถสืบค้น Trigger ทั้งหมดในระบบ หรือจำกัดเฉพาะฐานข้อมูลที่ใช้งานอยู่ได้
1. ดู Trigger ทั้งหมดในระบบ
ใช้ตาราง information_schema.triggers เพื่อดู Trigger ทุกตัวพร้อมชื่อ Schema
SELECT trigger_schema, trigger_name
FROM information_schema.triggers;
ตัวอย่างผลลัพธ์
+----------------+---------------------------------+
| TRIGGER_SCHEMA | TRIGGER_NAME |
+----------------+---------------------------------+
| sys | sys_config_insert_set_user |
| sys | sys_config_update_set_user |
| business | binsertTrigger |
| business | insertBef |
| business | Table1Trigger |
| test | insertingTrigger |
| sample | InsertPrevent_TriggerDemo |
| sample | InsertPreventTrigger |
| sample | before_Client_insert |
| sample | enforce_phone_check |
| sample | default_current_year |
| sample | restrictUpdateDemo |
| web | lowerCaseOnInsertDemo |
| web | preventing_to_insert_zero_value |
+----------------+---------------------------------+
2. ดู Trigger ของฐานข้อมูลปัจจุบันเท่านั้น
ใช้คำสั่ง SHOW TRIGGERS หลังจากเลือกฐานข้อมูลด้วย USE
USE web;
SHOW TRIGGERS;
ตัวอย่างผลลัพธ์ (รายละเอียดครบถ้วน)
+---------------------------------+--------+--------------+-----------------------------------------------------------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
| Trigger | Event | Table | Statement | Timing | Created | sql_mode | Definer | character_set_client | collation_connection | Database Collation |
+---------------------------------+--------+--------------+-----------------------------------------------------------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
| lowerCaseOnInsertDemo | INSERT | demotable222 | SET NEW.StudentSubject = LOWER(NEW.StudentSubject) | BEFORE | 2019-06-01 15:53:09.29 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | root@% | utf8 | utf8_general_ci | utf8_unicode_ci |
| preventing_to_insert_zero_value | INSERT | DemoTable | BEGIN IF(NEW.Value = 0) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'You can not provide 0 value'; END IF; END | BEFORE | 2019-07-07 18:03:41.65 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | root@% | utf8 | utf8_general_ci | utf8_unicode_ci |
+---------------------------------+--------+--------------+-----------------------------------------------------------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
สรุปคำสั่งที่มีประโยชน์
| วัตถุประสงค์ | คำสั่ง SQL |
|---|---|
| ดู Trigger ทั้งระบบ | SELECT trigger_schema, trigger_name FROM information_schema.triggers; |
| ดู Trigger ฐานข้อมูลปัจจุบัน | USE db_name; SHOW TRIGGERS; |
| ดู Trigger ของตารางเฉพาะ | SHOW TRIGGERS LIKE 'table_name'; |
| ดูโค้ด Trigger เต็ม | SHOW CREATE TRIGGER trigger_name; |
ข้อควรระวัง
SHOW TRIGGERSแสดงเฉพาะ Trigger ของฐานข้อมูลที่USEอยู่- สิทธิ์
TRIGGERจำเป็นต้องมีเพื่อดู Trigger - คอลัมน์
Statementแสดงโค้ดภายใน Trigger