คุณแสดงรายการทริกเกอร์ทั้งหมดในฐานข้อมูล MySQL ได้อย่างไร?


คำตอบ:


154

คำสั่งสำหรับแสดงรายการทริกเกอร์ทั้งหมดคือ:

show triggers;

หรือคุณสามารถเข้าถึงINFORMATION_SCHEMAตารางได้โดยตรงโดย:

select trigger_schema, trigger_name, action_statement
from information_schema.triggers
  • คุณสามารถทำได้ตั้งแต่เวอร์ชัน 5.0.10 เป็นต้นไป
  • ข้อมูลเพิ่มเติมเกี่ยวกับตารางอยู่ที่นี่TRIGGERS

3
เราขอแนะนำให้ใช้การสืบค้น "SHOW TRIGGERS" แทนการเข้าถึง information_schema โดยตรงซึ่งจะช้ามากเมื่อคุณมีฐานข้อมูลมากกว่าพันฐานข้อมูลบนเซิร์ฟเวอร์ในขณะที่ "SHOW TRIGGERS" ยังคงมีประสิทธิภาพที่โดดเด่น
Martin Tajur

ขอบคุณ fpr รุ่นที่สอง "ซับซ้อน" อย่างแรกใช้ไม่ได้ (ไม่รู้ resion) บนโฮสต์ตัวใดตัวหนึ่ง ...
userlond

5
โปรดทราบว่าSHOW TRIGGERSคุณต้องมีTRIGGERสิทธิ์สำหรับฐานข้อมูลและตารางนั้น หากคุณเข้าสู่ระบบ MySQL ด้วยผู้ใช้ที่ไม่มีสิทธิ์การดำเนินการSHOW TRIGGERSจะไม่ส่งคืนอะไรเลยแทนที่จะส่งข้อผิดพลาด ซึ่งอาจทำให้เกิดความสับสนหากคุณไม่ทราบถึงข้อกำหนดสิทธิพิเศษ
Christopher Schultz

14

ฉันหวังว่ารหัสต่อไปนี้จะให้ข้อมูลเพิ่มเติมแก่คุณ

select * from information_schema.triggers where 
information_schema.triggers.trigger_schema like '%your_db_name%'

ซึ่งจะทำให้คุณรวม 22 คอลัมน์ในMySQL รุ่น: 5.5.27และเหนือ

TRIGGER_CATALOG 
TRIGGER_SCHEMA
TRIGGER_NAME
EVENT_MANIPULATION
EVENT_OBJECT_CATALOG
EVENT_OBJECT_SCHEMA 
EVENT_OBJECT_TABLE
ACTION_ORDER
ACTION_CONDITION
ACTION_STATEMENT
ACTION_ORIENTATION
ACTION_TIMING
ACTION_REFERENCE_OLD_TABLE
ACTION_REFERENCE_NEW_TABLE
ACTION_REFERENCE_OLD_ROW
ACTION_REFERENCE_NEW_ROW
CREATED 
SQL_MODE
DEFINER 
CHARACTER_SET_CLIENT
COLLATION_CONNECTION
DATABASE_COLLATION

1
ฉันจะหลีกเลี่ยงการใช้LIKEเมื่อจัดการกับสคีมา ฉันทำงานในสภาพแวดล้อมที่การทำเช่นนั้นจะเกิดข้อผิดพลาดได้ง่ายซึ่งลูกค้ามีฐานข้อมูลชื่อ "บริษัท " และอีกชื่อหนึ่งชื่อ "company_project" ฉันขอแนะนำให้ใช้ KEYWORDS เป็นตัวพิมพ์ใหญ่เพื่อความชัดเจนและ INFORMATION_SCHEMA และคอลัมน์ที่นั่นดังนั้นจึงชัดเจนว่าคุณไม่ได้จัดการกับฐานข้อมูลปกติ
AndrewWhalan

13

คุณสามารถใช้ด้านล่างเพื่อค้นหาคำจำกัดความของทริกเกอร์โดยเฉพาะ

SHOW TRIGGERS LIKE '%trigger_name%'\G

หรือด้านล่างเพื่อแสดงทริกเกอร์ทั้งหมดในฐานข้อมูล จะใช้ได้กับ MySQL 5.0 ขึ้นไป

SHOW TRIGGERS\G

9

สำหรับการแสดงทริกเกอร์เฉพาะในสคีมาเฉพาะคุณสามารถลองทำดังต่อไปนี้:

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.