MySQL'de Trigger yaratma genel yapısı aşağıdaki gibidir :
CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_adi trigger_zamani trigger_olay_adi ON tablo_adi FOR EACH ROW trigger_kodu
trigger zamanı : BEFORE veya AFTER
trigger olay adi : INSERT veya UPDATE veya DELETE
Aşağıda bir örnek gözükmektedir :
CREATE DEFINER='root'@'%' TRIGGER db_adi.trigger_adi AFTER INSERT ON db_adi.tablo_adi FOR EACH ROW INSERT INTO diger_table_adi (T_ID) VALUES (NEW.T_ID)
Örnekte tablo_adi ile belirtilen bir tabloya yeni bir kayıt insert edildiği zaman, diger_table_adi tablosuna da T_ID sütunu eklenmektedir
MySQL'de bir tablo için her event (insert, update, delete) için tek bir trigger yaratılabilir. Ancak hem update hem de delet veya insert olan trigger eklenebilir. Aşağıda ayna anda iki tane trigger gözükmektedir
-- Trigger DDL Statements DELIMITER $$ <br/><br/> USE 'databaseadi'$$ CREATE DEFINER='root'@'%' TRIGGER db_adi.trigger_adi AFTER INSERT ON db_adi.tablo_adi FOR EACH ROW INSERT INTO diger_table_adi (T_ID) VALUES (NEW.T_ID)$$ CREATE DEFINER='root'@'%' TRIGGER db_adi.trigger_adi AFTER DELETE ON db_adi.tablo_adi FOR EACH ROW DELETE FROM diger_table_adi where T_ID=OLD.T_ID$$
Yukarıdaki ilk trigger tablo_adi ile verilen tabloya yeni bir kayıt eklendiğinde diger_table_adi tablosuna kayıt eklemektedir. İkinci trigger ise tablo_adi dan kayıt silinince diger_table_adi tablosundan da silmektedir
CREATE DEFINER='root'@'%' TRIGGER 'db'.'trigger_adi' AFTER UPDATE ON 'db'.'subscriber' FOR EACH ROW IF (NEW.status<>OLD.status) THEN INSERT INTO 'otherdb'.'subscriber_status_log' ('subscriber_id','old_status','new_status') VALUES(NEW.ID,OLD.status,New.status); END IF$$