Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีดู Trigger ทั้งหมดและ Trigger ของฐานข้อมูลปัจจุบันใน MySQL

ภาพรวม

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