Bagaimana Anda membuat daftar semua pemicu di database MySQL?

100

Apa perintah untuk mencantumkan semua pemicu dalam database MySQL?

Harry
sumber

Jawaban:

149

Perintah untuk mencantumkan semua pemicu adalah:

show triggers;

atau Anda dapat mengakses INFORMATION_SCHEMAtabel secara langsung dengan:

select trigger_schema, trigger_name, action_statement
from information_schema.triggers
Harry
sumber
2
Saya akan merekomendasikan menggunakan kueri "SHOW TRIGGERS" daripada mengakses information_schema secara langsung - yang terakhir akan sangat lambat setelah Anda memiliki lebih dari seribu database di server sementara "SHOW TRIGGERS" masih memiliki kinerja yang luar biasa.
Martin Tajur
Terima kasih fpr kedua versi "rumit". Yang pertama tidak berfungsi (tidak tahu resionnya) di salah satu host ...
userlond
3
Perhatikan bahwa SHOW TRIGGERSmengharuskan Anda memiliki TRIGGERhak istimewa untuk database dan tabel tersebut. Jika Anda login ke MySQL dengan pengguna yang tidak memiliki hak istimewa, mengeksekusi tidak SHOW TRIGGERSakan menghasilkan apa-apa daripada membuat kesalahan. Itu bisa membingungkan jika Anda tidak mengetahui persyaratan hak istimewa.
Christopher Schultz
14

Saya harap kode berikut akan memberi Anda lebih banyak informasi.

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

Ini akan memberi Anda total 22 Kolom dalam versi MySQL: 5.5.27 dan Di Atas

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
Pragnesh Karia
sumber
1
Saya akan menghindari penggunaan LIKEsaat berurusan dengan skema. Saya telah bekerja di lingkungan di mana melakukannya dengan cara seperti itu akan rentan terhadap kesalahan di mana klien memiliki database bernama "perusahaan" dan yang lain bernama "proyek_perusahaan". Saya juga menyarankan kapitalisasi KEYWORDS untuk kejelasan dan INFORMATION_SCHEMA dan kolom di sana sehingga jelas Anda tidak berurusan dengan DB biasa.
AndrewWhalan
13

Anda dapat menggunakan di bawah ini untuk menemukan definisi pemicu tertentu.

SHOW TRIGGERS LIKE '%trigger_name%'\G

atau di bawah ini untuk menampilkan semua pemicu dalam database. Ini akan berfungsi untuk MySQL 5.0 dan yang lebih baru.

SHOW TRIGGERS\G
Kainda
sumber
9

Untuk menampilkan pemicu tertentu dalam skema tertentu, Anda dapat mencoba hal berikut:

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
sunil
sumber