none
Trigger Kullanmak Yardım Lütfen RRS feed

  • 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.

    11 Ocak 2019 Cuma 08:36

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;
             

    • Yanıt Olarak İşaretleyen kayaalp 20 Ocak 2019 Pazar 20:14
    11 Ocak 2019 Cuma 13:52
  • 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;
             

    BEFORE yazan yere AFTER yazın.

    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
    11 Ocak 2019 Cuma 13:55

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...

    11 Ocak 2019 Cuma 09:05
  • 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


    11 Ocak 2019 Cuma 09:14
  • Hocam hata veriyor birde öğrenci ID int değil kullandığım database oracle ORA-04071 missing BEFORE,AFTER.... hatası alıyorum. 
    11 Ocak 2019 Cuma 10:15
  • 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.
    11 Ocak 2019 Cuma 10:18
  • 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;
    

    11 Ocak 2019 Cuma 10:28
  • 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...

    11 Ocak 2019 Cuma 10:31
  • hocam invalit trigger name hatası veriyor köşeli parantezleri kaldırıyorum bu seferde ORA-04071 missing BEFORE,AFTER.... hatası veriyor. 
    11 Ocak 2019 Cuma 11:10
  • hocam triggerler ekleniyor ancak kayıt eklediğimde ogrenci_basvuru açıklama değişmiyor.
    11 Ocak 2019 Cuma 11:11
  • tablo yapılarınızı paylaşır mısınız?

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    11 Ocak 2019 Cuma 11:16
  • 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 

    11 Ocak 2019 Cuma 13:00
  • ogrenci_kesin_kayitta başvuru_id alanı olmalı. Yoksa ne ile iliskilendireceksin? ogrenci_adi_soyadi alanını kullanamazsın çünkü ayni isimde birden fazla öğrenci olabilir.
    11 Ocak 2019 Cuma 13:10
  • Aynen hocam ogrenci_kesin_kayit tablomda ogrenci_id mevcut ilişkiyi ogrenci_basvuru tablomdaki ogrenci_id ile kuruyorum. herbiri benzersiz. teşekkür ederim
    11 Ocak 2019 Cuma 13:14
  • 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.

    11 Ocak 2019 Cuma 13:25
  • hocam kodu kendime göre uyarladım kod çalışıyor trigger oluşuyor ama kayıt eklerken acıklama kısmına 1 yada 0 yazmıyor.
    11 Ocak 2019 Cuma 13:34
  • Uyarlarken hata yapmissinizdir. Kod olarak yapıları ve trigger kodunu verir misiniz.
    11 Ocak 2019 Cuma 13:39
  • 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;
             

    • Yanıt Olarak İşaretleyen kayaalp 20 Ocak 2019 Pazar 20:14
    11 Ocak 2019 Cuma 13:52
  • 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;
             

    BEFORE yazan yere AFTER yazın.

    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
    11 Ocak 2019 Cuma 13:55
  • AFTER INSERT
    11 Ocak 2019 Cuma 13:55
  • yok hocam değişen birşey olmadı, önce yada sonra olmasının bir manası varmıdırki
    11 Ocak 2019 Cuma 14:06
  • 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...

    11 Ocak 2019 Cuma 14:21
  • Alan adlariniz sürekli değişiyor, dogru alan adları ne ise onunla yapın olur.
    11 Ocak 2019 Cuma 14:42
  • yok hocam değişen birşey olmadı, önce yada sonra olmasının bir manası varmıdırki
    Tabii ki var. Birisi once digeri sonra. livesql.Oracle'da benim verdigim kodu denedim, gayet güzel calisiyor.
    11 Ocak 2019 Cuma 16:00
  • Murat Hocam ve Çetin Hocam çok teşekkür ederim. Kodlar dediğiniz gibi çalışıyor.
    12 Ocak 2019 Cumartesi 07:35