Herkese kolay gelsin merhaba.
Arkadaşlar şöyle bir sıkıntım var.2 tablom var biri cari biri sikayet.
cari tablomdaki carunvan alanının adı değiştiği zaman otomatik olarak sikayet tablomdaki ilişkili kayıtlardaki s_carunvan alanını güncellemek için bir trigger yazıyorum ama bi türlü beceremedim.
CREATE TRIGGER unvanguncelle ON tbl_cari
FOR update
AS
update tbl_sikayet
set tbl_sikayet.s_carunvan=inserted.car_unvan
from tbl_cari join inserted
on s_carunvan.tbl_sikayet=inserted.car_unvan
falan diye devam edecek ama nasıl.İşin özü cari tablomdaki carunvan alanı değişirse sikayet tablomdaki alanda güncellensin istiyorum.Yardım edecek arkadaşlara teşekkürler.
CREATE TRIGGER unvanguncelle ON tbl_cari
FOR update
AS
set nocount on
declare @Newunvan varchar (50), @Oldunvan varchar(50)
select @Newunvan = inserted.car_unvan from inserted
select @Oldunvan = deleted.car_unvan from deleted
update tbl_sikayet set tbl_sikayet.S_CARUNVAN = @Newunvan
where tbl_sikayet.S_CARUNVAN = @Oldunvan
if @@rowcount=0 or @@error<>0
begin
Rollback tran
end
set nocount off
ile şikayet tablomdaki s_carunvan alanı otomatik güncelleniyor.Bakalım başka ne sorunlar çıkacak [/quote]
Arkadaşlar güncelleme işini çözdüm ama şimdi de şöyle bir sıkıntı var.
programda kullanıcı cari tabloda ünvan alanında değişiklik yaptığında veritabanında yukarıdaki trigger sayesinde şikayet tablosundaki ünvan alanı güncelleniyor.buraya kadar her şey tamam.Fakat sorun şu;
progamda değişiklik yapıldıktan sonra şikayet formuna girdiğimde şikayet dataseti active edilmesine rağmen boş geliyor.Ta ki programdan çıkıp tekrar girdiğinizde şikayet bölümündeki kayıtları görüyorsunuz.bunun acaba yukardaki trigger ile ilgisi var mıdır?
Peki bu olay neden olmaz.trigger kullanmadan yukarıdaki güncelleştirmeyi yapmak için ne yapmalıyım.Foreign key kullanmaya çalışıyorum.
tbl_cari tbl_şikayet
car_id(primary key) sid(primary key)
car_unvan(varchar,bu alanda unique index tanımlı) s_carunvan(varchar)
car_unvan ile s_carunvan arasında nasıl bir ilişki kurabilirim.Çıldırıcam
valla az kaldı
Tekrar söylüyorum yaparsan senin için daha iyi olur.
Sikayet tablonda ilgili carinin cari tablosundaki unvan alanını değil,
cari tablondaki varsa cari ID sini eklet
yoksa da cari tablona bir prm key olarak olarak ekle;
conari yazdı:...
Sikayet tablonda ilgili carinin cari tablosundaki unvan alanını değil,
cari tablondaki varsa cari ID sini eklet
yoksa da cari tablona bir prm key olarak olarak ekle;
@conari nin uyarısına kulak ver. Enerjini gereksiz bir işleme harcıyorsun gibime geliyor. Bu iş UPDATE CASCADE ile yapılıyor olsa da (MS-SQL de nasıl bilmiyorum) yapılması gereken yukarıdaki önerideki gibidir. ve olay Master/Detay olayıdır
conari yazdı:...
Sikayet tablonda ilgili carinin cari tablosundaki unvan alanını değil,
cari tablondaki varsa cari ID sini eklet
yoksa da cari tablona bir prm key olarak olarak ekle;
@conari nin uyarısına kulak ver. Enerjini gereksiz bir işleme harcıyorsun gibime geliyor. Bu iş UPDATE CASCADE ile yapılıyor olsa da (MS-SQL de nasıl bilmiyorum) yapılması gereken yukarıdaki önerideki gibidir. ve olay Master/Detay olayıdır
rsimsek abicim ve cvp yazan arkadaşlara teşekkürler.evet car_unvan alanını şikayet tablosunda ikinci kere tutmaktan vazgeçtim.Katliama son verdim:)sorunu çözdüm