Bir MySQL veritabanındaki tüm tetikleyicileri nasıl listelersiniz?


102

Bir MySQL veritabanındaki tüm tetikleyicileri listeleme komutu nedir?

Yanıtlar:


154

Tüm tetikleyicileri listeleme komutu şudur:

show triggers;

veya INFORMATION_SCHEMAtabloya doğrudan şu şekilde erişebilirsiniz :

select trigger_schema, trigger_name, action_statement
from information_schema.triggers
  • Bunu 5.0.10 sürümünden itibaren yapabilirsiniz.
  • TRIGGERSTablo hakkında daha fazla bilgi burada .

3
Doğrudan bilgi şemasına erişmek yerine "TETİKLEYİCİLERİ GÖSTER" sorgusunu kullanmanızı tavsiye ederim - sunucuda binden fazla veri tabanına sahip olduğunuzda ikincisi çok yavaş olurken "TETİKLERİ GÖSTER" hala olağanüstü bir performans sergiliyor.
Martin Tajur

Teşekkürler fpr ikinci "karmaşık" sürüm. İlki, ana bilgisayarlardan birinde çalışmıyor (resion'u bilmiyorum) ...
userlond

5
Bu veritabanı ve tablo için ayrıcalığa SHOW TRIGGERSsahip olmanızı gerektirdiğini unutmayın TRIGGER. MySQL'e ayrıcalıklı olmayan bir kullanıcıyla giriş yaparsanız, yürütme SHOW TRIGGERSbir hata atmak yerine hiçbir şey döndürmez. Ayrıcalık gereksiniminin farkında değilseniz bu kafa karıştırıcı olabilir.
Christopher Schultz

14

Umarım aşağıdaki kod size daha fazla bilgi verir.

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

Bu size MySQL sürümünde toplam 22 Sütun verecektir : 5.5.27 ve Üstü

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Şema ile uğraşırken kullanmaktan kaçınırım . Bir müşterinin "şirket" ve başka bir "şirket_projesi" adlı bir veritabanına sahip olduğu, bu şekilde yapmanın hataya açık olduğu ortamlarda çalıştım. Ayrıca, anlaşılırlık ve INFORMATION_SCHEMA için KEYWORDS'ü ve oradaki sütunları büyük harfle yazmanızı öneririm, böylece normal bir DB ile uğraşmadığınız açıktır.
AndrewWhalan

13

Belirli bir tetikleyici tanımını bulmak için aşağıdan yararlanabilirsiniz.

SHOW TRIGGERS LIKE '%trigger_name%'\G

veya aşağıdaki tüm tetikleyicileri veritabanında göstermek için. MySQL 5.0 ve üzeri için çalışacaktır.

SHOW TRIGGERS\G

9

Belirli bir şemada belirli bir tetikleyiciyi göstermek için aşağıdakileri deneyebilirsiniz:

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.