Realition
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Realition
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.
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
update PERSONEL_DEMIRBAS
set PERSOENEL_NO=newrows.PERSONEL_NO
where PERSOENEL_NO=oldrows.PERSONEL_NO
Kolay gelsin....
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
update PERSONEL_DEMIRBAS
set PERSOENEL_NO=newrows.PERSONEL_NO
where PERSOENEL_NO=oldrows.PERSONEL_NO
Kolay gelsin....
master-detail kayıt silme olayına
viewtopic.php?t=110
verilen cevaplara benzer şekilde burada da master tablonun beforeedit ından önceki numarayı global bir değişkende saklayıp afterpost event ına
bu kadar.
viewtopic.php?t=110
verilen cevaplara benzer şekilde burada da master tablonun beforeedit ından önceki numarayı global bir değişkende saklayıp afterpost event ına
Kod: Tümünü seç
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(update detail_tablo set numara = ' + IntToStr(tblMasterNUMARA.Value)); // yeni numara
Query1.SQL.Add('where numara = ' + IntToStr(old_numara));
Query1.ExecSQL;