En iyi yanıtlayıcılar
Trigger Kullanmak Yardım Lütfen

Soru
-
Merhabalar yapmak istediğim ikitane tablom var, Öğrenci_Basvuru, oğrenci_Kesin_Kayit
ogrenci_basvuru tablom;
basvuru_id Öğrenci Adı aciklama
15 Ahmet X 0
16 Mehmet Y 1
şimdi; öğrenci_kesin_kayıta veri eklediğimde, ogrenci_basvuru tablosuna gidecek eklenen ID nin açıklama kısmına 1 yazacak
ogrenci_kesin_kayit tablosundan veri sildiğimde, ogrenci_basvuru tablosuna gidecek ID nin açıklama kısmını sıfır yapıcak.
şimdiden teşekkür ederim.
Yanıtlar
-
-
CREATE OR REPLACE TRIGGER kayit_ekle BEFORE INSERT ON ogrenci_kesin_kayit FOR EACH ROW BEGIN update ogrenci_basvuru set aciklama = 1 where kayit_id = :NEW.kayit_id; END;
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...
- Yanıt Olarak İşaretleyen kayaalp 20 Ocak 2019 Pazar 20:14
Tüm Yanıtlar
-
CREATE TRIGGER [Ekle] ON [Ogrenci_Kesin_Kayit] AFTER INSERT AS BEGIN UPDATE [Ogrenci_Basvuru] SET [aciklama]=1 WHERE [basvuru_id] = :new.basvuru_id END
CREATE TRIGGER [Sil] ON [Ogrenci_Kesin_Kayit] AFTER DELETE AS BEGIN UPDATE [Ogrenci_Basvuru] SET [aciklama]=0 WHERE [basvuru_id] = :old.basvuru_id END
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...
- Düzenleyen MuratAKSARAY 11 Ocak 2019 Cuma 10:41 Oracle
-
Create trigger kayit_ekle on ogrenciKesinKayit after insert as begin update ogrenciBasvuru set aciklama = 1 where basvuru_Id in (select basvuru_id from inserted); end Create trigger kayit_sil on ogrenciKesinKayit after delete as begin update ogrenciBasvuru set aciklama = 0
where basvuru_Id in (select basvuru_id from deleted);
end
- Düzenleyen CetinBasoz 11 Ocak 2019 Cuma 09:16
-
-
Kusura bakma ben Oracle kullanmıyorum. Dokumentasyonunda trigger nasil yazilacagi vardir. inserted ve deleted ozel tabloları oracle'da baska isimde olabilir. SQL Server forumunda görünce MS SQL Server sanmistim.
Not: Ogrenci ID'nin int olmasiyla ilgili bir kod yok yukarıda. Belki de benim mesajımdan bahsetmiyordun. Benimkinde tipi GUID de olsa farketmez, ve dikkat et her iki islemde "deleted" tablosuyla yapılmıyor.- Düzenleyen CetinBasoz 11 Ocak 2019 Cuma 10:20
-
Hocam hata veriyor birde öğrenci ID int değil kullandığım database oracle ORA-04071 missing BEFORE,AFTER.... hatası alıyorum.
Oracle dokumentasyonuna bakınca şöyle gibi:
CREATE OR REPLACE TRIGGER kayit_ekle AFTER INSERT ON ogrnciKesinKayit FOR EACH ROW BEGIN update ogrenciBasvuru set aciklama = 1 where basvuru_id = :NEW.basvuru_id; END; CREATE OR REPLACE TRIGGER kayit_sil AFTER DELETE ON ogrnciKesinKayit FOR EACH ROW BEGIN update ogrenciBasvuru set aciklama = 0 where basvuru_id = :OLD.basvuru_id; END;
-
Hocam hata veriyor birde öğrenci ID int değil kullandığım database oracle ORA-04071 missing BEFORE,AFTER.... hatası alıyorum.
Kodlarda değiştirmeniz gereken yerleri koyu renk ile işaretledim.
Bu haliyle kullanabilirsiniz.
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...
- Düzenleyen MuratAKSARAY 11 Ocak 2019 Cuma 10:41
-
-
-
-
Hocam tüm alanlar varchar2 olarak tanımlı
ogrenci_basvuruda 3 tane alan mevcut ogrenci_id, adi_soydi,aciklama
ogrenci_kesin_kayitta 2 alan mevcut ogrenci_id, ogrenci_adi_soyadi
kesin kayıt tablosuna ekleme yapılınca basvurudaki acıklamada 1 yazıcak , silinincede 0
-
-
-
Ah tamam ikisinde de ogrenci_id varmış, gözümden kacti, orijinal sorunda basvuru_id vardi ogrenci_id yoktu.
basvuru_id yazan yerlere ogrenci_id yazin.
- Düzenleyen CetinBasoz 11 Ocak 2019 Cuma 13:26
-
-
-
-
CREATE OR REPLACE TRIGGER kayit_ekle BEFORE INSERT ON ogrenci_kesin_kayit FOR EACH ROW BEGIN update ogrenci_basvuru set aciklama = 1 where kayit_id = :NEW.kayit_id; END;
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...
- Yanıt Olarak İşaretleyen kayaalp 20 Ocak 2019 Pazar 20:14
-
-
-
yok hocam değişen birşey olmadı, önce yada sonra olmasının bir manası varmıdırki
Yeni kayıt, yani ":new" değeri oluştuktan sonra yeni verileri kullanabilmeniz için, "Sonra" olmalı.
Bence sorun iki tablonuz arasında bağlantı olmamasından kaynaklanıyor.
Verdiğim yanıtlarda basvuru_id kolonunun ortak olduğunu varsaymıştım.
Ama, yanıtlardan sonraki sorularınızdan anladığım kadarıyla, durum öyle değil.
Ogrenci_basvuru tablonuzdaki basvuru_id kolonu, Ogrenci_kesin_kayıt tablonuzda da olmalı.
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...
-
-
-