eğer bir child kaydın parent_id alanı değişirse yani başka bir kayda alt kayıt olarak bağlanırsa eski parent kayıtta bir updat eişlemi olmadığı için o kaydın childs_total alanı hatalı sonuç barındıracak, bunun için ek kontroller d eyapılabilir ama o zaman da yapılan her update işleminde bunu da kontrol ettirmek gerekecek.
uzun uzun recursion dışında bir yol hala aklıma gelmiyor. Husrev yazmış: > Timuçin bey, > > belki sorunuza cevap olmayacak ama, sorununuza bir çözüm önerisi olacak : ) > > tabloyu > > id > parent_id > ad > kod > total > childs_total > > şeklinde yapar da trigger'lar yardımıyla childs_total değerlerini > güncel tutarsanız sorunununuz çözülür. > > trigger'larla nasıl yapılır dersek; bir UPDATE triggeri icinde > > UPDATE tablo SET childs_total = childs_total + NEW.total WHERE id = > NEW.parent_id; UPDATE tablo SET childs_total = childs_total - > OLD.total WHERE id = OLD.parent_id; > > kullanarak yapabilirsiniz. hatta insert'lerde de total 0'dan farklı > oluyorsa onun için de INSERT triggeri icinde > > UPDATE tablo SET childs_total = childs_total + NEW.total WHERE id = > NEW.parent_id; > > yapmak yeterli olacaktır gibi gibi : ) > > DELETE için yapılması gerekeni de artık hayal edersiniz :) > > Not: Veritabanı sunucuları hakkında detaylı bilgi sahibi olmadığımdan > Trigger'ların ne kadar verimli/verimsiz olduğu konusunda hiçbir fikrim > yok. Sadece veritabani sistemleri dersinde ilgimi çeken triggerlar ile > ilgili birkaç örnek yapmaya çalışırken bir puanlama sistemi için > benzer birşey düşünmüştüm. Ordan akılmda kalan düzensiz bilgiler ... > > -- > Husrev > [email protected] _______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
