Realition - Delphi Forum
Mesaj gönderen husonet » 27 Haz 2003 08:31
Arkadaşlar amacım bir ilişki kurduğum database ile ilgili Master tablosundaki numarayı değiştirdiğimde Detail tablosundaki numarların da değişmesini istiyorum. Bunu nasıl yapabilirim fikri olan arkadaşlar yardımcı olurlarsa çok sevinirim. Hepinize iyi çalışmalar Arkadaşlar.
Mesaj gönderen fahrettin » 27 Haz 2003 09:04
Eger trigger destekleyen bir veritabani kullnaiyor iseniz bu cok kolay. Hatta eger bir veritabani tasarim araci kullaniyor iseniz (Erwin, power Designer) bu arac zaten referential integrity denilen data butunlugunu koruma kurallarini islettiginz taktirde gerekli trigger kodunu sizin icin yazacaktir.
Ama ornek olarak PERSONEL tablosunda PERSONEL_NO alani var ve bunun detayinde da bir PERSONEL_DEMIRBAS tablosunda da yine PERSONEL_NO ve DEMIRBAS_NO gibi diger alanlar var. Bir personele ait demirbaslar detay tabloda tutuluyor ve PERSONEL_NO degeri PERSONEL tablsounda degisirse detay tablodaki PERSONEL_NO alani da degismeli.
Sybase ASA icin ornek kod yaziyorum. NBir cok veritabaninda benzer bir kod isi gorur.
PERSONEL tablosunun update trigger'inda su kodun olmasi yeterli...
if oldrows.PERSONEL_NO<>newrows.PERSONEL_NO then
Mesaj gönderen rsimsek » 28 Haz 2003 12:28
master-detail kayıt silme olayına
verilen cevaplara benzer şekilde burada da master tablonun beforeedit ından önceki numarayı global bir değişkende saklayıp afterpost event ına
Query1.SQL.Add(update detail_tablo set numara = ' + IntToStr(tblMasterNUMARA.Value));  // yeni numara
Query1.SQL.Add('where numara = ' + IntToStr(old_numara));