15 Nisan 2009 Çarşamba

MySql Trigger INSERT, UPDATE, DELETE Farkli database baglantisi kurma

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;

$$

Hiç yorum yok: