Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 18/08/2006, 01:59   #1 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Ampul Mysql TRIGGERS vs vs vs!!?

Birkaç gündür google içinde binlerce sorgu yapmışımdır ama sanırım mysql de TRIGGERS yeni bir özellik olduğu için yeterli bilgiye tam olarak ulaşamadım!..

Soru 1. Bir TRIGGERS oluşturduğumuzda bu nerde depo ediliyor ? Çünkü ben veritabanının yedeğini aldığımda içinde oluşturduğum TRIGGERS göremedim.

Mysql içinde information_schema diye bir tablo var...onun içinde TRIGGERS tablosunda bunları görebiliyorum ama aldığım yedek içinde bunlar görünmüyor..

-Yedek almak istediğinizde bunların nasıl yedeğini alıyorsunuz ?

Soru 2. Bir TRIGGERS oluşturduğumda daha sonra bunda bazı değişiklikler yapmak durumunda kalabiliyor insan.. fakat önceki yaptığınız TRIGGERS ekrana bir türlü çağırıp ne yaptığınıza bakamıyorsunuz ve sanıyorum ki oluşturulan TRIGGERS update edilemiyor onun yerine eskisini kaldırıp yenisi eklemek lazım..ama bir sürü TRIGGERS oluşturduğunuzda eskisi aklınızda olmuyor ki mutlaka TRIGGERS ekrana taşımak lazım...

-Daha önce TRIGGERS kullananlar bu tip problemler için nasıl çözümler geliştirmiş olabilirler?

Soru 3. Mysql TRIGGERS da kitleme mekanizması nasıl çalışıyor...
Örneğin: Ben tablonun sadece bir alnın değiştirildiğinde TRIGGERS çalışmasını istiyorum..tablo.alan1 değiştimi TRIGGERS tetiklenmeli..
ama sanıyorum ki mysql de tablonun herhangi alanı değiştirildiğinde TRIGGERS tetikleniyor..

-Ben mi yanlış biliyorum yoksa update yapılırken bu alanı belirttiğimizde TRIGGERS ona göre mi tetikleniyor ?
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et

Enson 18/08/2006 20:54 tarihinde pirilti tarafından düzenlenmiştir..
pirilti hatta değil   Alıntı Yaparak Yanıtla
Eski 19/08/2006, 12:47   #2 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Varsayılan

Mysql trigger ilgili yeterli döküman bulamıyorum..Özellikle update yaparken çıkan problemlerle ilgili yeterli döküman bilen varmı?
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Eski 19/08/2006, 21:11   #3 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Varsayılan

Ben birkaç şey yazayım..
Mysql trigger düşünüldüğü gibi cafcaflı birşey değil çünkü...
Tetiklemeleri tablo alanlarına göre sınırlayamıyorsunuz.. her güncelemede tetikler çalışıyor oysa siz tablonuzda sadece bir alan değiştirildiğinde tetikleme olsun isteyebilirsiniz...

İkinci en kötü yan ise mysql triggerda tetiklenen tablo kendini tetikleyemiyor..
Yani tablonuda bir alan değiştirildiğinde işlem yapıp tekrar aynı tablonuza bağlanıp yeni değerleri giremiyorsunuz..

Henüz mysql yolun çoook başaında...
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Eski 19/08/2006, 23:28   #4 (permalink)
Cevizci
 
arthon Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 07/2006
Yer: İstanbul
Mesaj: 339
Varsayılan

Alıntı:
You can refer to columns in the subject table (the table associated with the trigger) by using the aliases OLD and NEW. OLD.col_name refers to a column of an existing row before it is updated or deleted. NEW.col_name refers to the column of a new row to be inserted or an existing row after it is updated.
tetiklenen tabloda update işlemi sırasında trigger içinde yeni ve eski değerlere NEW ve OLD ile ulaşabilirsin
bu ilk problemini de çözer, triggerın içine if koyarsın
if (OLD.kolonadi != NEW.kolonadi)
şeklinde böylece sadece kolonadi değiştirildiği zaman trigger çalışmış olur
trigger'ı create ederken kullandığın kodu görmek için
SHOW TRIGGER triggeradi
şeklinde bir dene daha önce yapmıştım bir şekilde ama emin değilim bu olduğundan
arthon hatta değil   Alıntı Yaparak Yanıtla
Eski 20/08/2006, 10:21   #5 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Varsayılan

Evet sorunu o şekilde çözmüştüm ama update yapılan tabloya tekrar erişim olmuyor..
Ayrıca sorunun bu şekilde çözülmesi basite kaçıştır if (OLD.kolonadi != NEW.kolonadi)
Çünkü tablonuzda yüzlerce alan olabilir ve siz sadece bir alan için tetikleme çalıştırmak isterken tabloda değişen her alan için tetik çalışır birde koşul ifadeniz okadarda kısa olmaya bilir ve eğer koşul ifadenizde çok uzun ise tablo da değişebilecek alan x koşul ifade sayısı kadar gereksiz bir yavaşlama ve tablo kitlenmesiyle karşılaşırsın ki buda benim için mysql trigger vasatın altına indirir...Sırf bunun için postgresql geçilmez ama gelişmiş veri tabanıyla işini gören veritabanı arasındaki bariz fark bu olsa gerek...

İkinci olay dahada saçma kendi kendini tetikleyen tabloların önünü mysql daha baştan kesmiş...eğer bir tabloya triggerle erişiyorsan trigger ikinci defa aynı tabloya erişimi kapatıyorki sonsuz döngüye girmesin...Oysaki triggerin en büyük uygulamaları zincir tetiklerden oluşur....

SHOW TRIGGER triggeradi ihtiyaca cevap vermiyor çünkü sadece triggerin göbeğini getiriyor,
yani ben şöyle birşey yapamıyor;
Hey mysql kardeş sen şu triggeri getir bakalım hıım bumuymuş bizim triggerimiz bunda şu eksiklikler var bla bla bla tamam şimdi oldu bunu tekrar yükle bakalım.. Mysql in ceabı : ııhhh yapamam
Peki ne yapabilirsin.. eskisini sil yenisini yaz..

Sonuç benim için mysql 5.0 la gelen özellikle sadece göz boyamak.
İşimiz görülsün yeter mantığı...çok fazla gitmez..çünkü herşey giderek karmaşıklaşıyor..Ayrıntılara girmeyerek hız kazanma mantığının sonu yakındır.
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
PHP&MYSQL Tabanlı Siteler için taşınma El Kitabı /TELNET/SSH/MySQL 4.1/DUM/UTF-8 Grafik PHP 20 16/11/2008 14:47
Mysql 4.3 den Mysql 5.0 geçerken hata! pirilti Veritabanları & SQL 6 10/08/2006 16:13
Mysql Sorunu(Mysql bilgisayarımda çalışmıyor) Panteray Veritabanları & SQL 3 17/05/2006 19:30
mysql dediki :'/var/lib/mysql/mysql.sock' fgenc Veritabanları & SQL 6 15/12/2004 16:51
Hata mesaji: To access your MySQL database, you can use the Mysql.pm module. alize Veritabanları & SQL 1 26/02/2004 12:27


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 21:00.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net