Trigger tetik/tetikleyici demektir. Bir islem karşında başka bir iş var mı? Abi diyerek hazırda bekleyen bir aractir. İşlem den kasıt olay yani Insert Update Delete dir.
syntax i
DECLARE$$
CREATE TRIGGER tiggeradi (BEFORE veya AFTER ) (INSERT,UPDATE,DELETE) bunlardan biri
ON takip_edecegimiz_tabloadi
FOR EACH ROW
BEGIN
sql sorgusu buraya
NEW.alanadi ile eklenen kaydi yakalarsiniz
Eger isleminiz UPDATE veya DELETE ise OLD.alanadi ile yakalama yapabilirsiniz
END;
$$
İki farkli veritabanina ulasma yetkisi bulunan bir user ile asagidaki ornek trigger lari yaratiyorum. Ve bir veritabanindaki tabloda islem yapilinca digerinde otomatik olarak karsiligi gerceklesiyor.
SHOW TRIGGERS
--DROP TRIGGER ins_pommo_trig
DELIMITER $$
CREATE TRIGGER ins_pommo_trig BEFORE INSERT ON members
FOR EACH ROW
BEGIN
INSERT INTO pommo.pommo_subscribers (email, time_touched, time_registered, flag, status, MailListID, CategoryID, Unsubscribe, JoinDate)
VALUES
(NEW.Email,CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP(), 0, 1, 1, 0,0,CURRENT_TIMESTAMP())
END;
$$
DELIMITER $$
CREATE TRIGGER del_pommo_trig BEFORE DELETE ON members
FOR EACH ROW
BEGIN
DELETE FROM pommo.pommo_subscribers
WHERE pommo.pommo_subscribers.email = OLD.Email AND MailListID =1;
END;
$$
--DROP TRIGGER upd_pommo_trig
DELIMITER $$
CREATE TRIGGER upd_pommo_trig BEFORE UPDATE ON members
FOR EACH ROW
BEGIN
UPDATE pommo.pommo_subscribers
SET pommo.pommo_subscribers.email = NEW.Email
WHERE pommo.pommo_subscribers.email = OLD.Email AND MailListID = 1;
END;
$$