İçerikler :

AFTER BEFORE DELETE IF İle Koşul Kullanan Trigger Örneği INSERT MySQL'de Aynı Anda Birden Fazla Trigger Yarat.. MySQL Trigger Yaratma NEW OLD TRIGGER Trigger Desteklediği Olaylar Trigger Zamanları UPDATE

Bu Sayfayı Paylaş:

Veri

MySQL Trigger Yaratma

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


Kavram

TRIGGER

Tanım: MySQL'de trigger yaratma komutu. Genel yapısı TRIGGER trigger_adi trigger_zamani trigger_olay_adi ON tablo_adi FOR EACH ROW trigger_kodu şeklindedir

Veri

Trigger Zamanları

MySQL'de bir trigger'ın iki tür çalışma zamanı vardır :
  • BEFORE : Trigger kodunun insert, delete , update işlemi yapılmadan önce çalışacağını belirtir
  • AFTER : Trigger kodunun insert, delete , update işlemi yapıldıktan sonra çalışacağını belirtir


Kavram

BEFORE

Tanım: MySQL'de Trigger yaratırken trigger kodunun insert, delete , update işlemi yapılmadan önce çalışacağını belirtir. Kodda sonra çalışması için AFTER ifadesi kullanılır

Kavram

AFTER

Tanım: MySQL'de Trigger yaratırken trigger kodunun insert, delete , update işlemi yapıldıktan sonra çalışacağını belirtir. Kodda önce çalışması için BEFORE ifadesi kullanılır

Veri

Trigger Desteklediği Olaylar

MySQL'de bir trigger üç türlü olay vardır :
  • INSERT : insert işleminden sonra veya önce çalışacağını belirtir
  • UPDATE : update işleminden sonra veya önce çalışacağını belirtir
  • DELETE : delete işleminden sonra veya önce çalışacağını belirtir


Kavram

INSERT

Tanım: MySQL'de Trigger kodunun insert işleminden sonra veya önce çalışacağını belirten ifade

Kavram

UPDATE

Tanım: MySQL'de Trigger kodunun update işleminden sonra veya önce çalışacağını belirten ifade

Kavram

DELETE

Tanım: MySQL'de Trigger kodunun delete işleminden sonra veya önce çalışacağını belirten ifade

Kavram

NEW

Tanım: MySQL'de Trigger kodunda kullanılan , insert işlemlerinde eklenen yeni kaydı, update işlemlerinde ise kaydın son halini belirten ifade. Örneğin NEW.ID ifadesi yeni eklenen kaydın ID sütunun değerini verir

Kavram

OLD

Tanım: MySQL'de Trigger kodunda kullanılan , update ve delete işlemlerinde silinen kaydı veya güncellenen kaydın önceki halini belirten ifade. Örneğin OLD.ID ifadesi silinen veya güncellenen satırın ID sütunun değerini verir

Veri

MySQL'de Aynı Anda Birden Fazla Trigger Yaratma

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


Örnek

IF İle Koşul Kullanan Trigger Örneği



Aşağıda if kullanılan bir örnek gözülmektedir :
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$$


subscriber tablosu update işlemi yapıldığında, eğer status değeri değişiyorsa subscriber_status_log tablosuna eski status ve yeni status kayıt edilmektedir



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir