Yanıt Ttrigger oluşturmak

  • 21 Mart 2012 Çarşamba 09:00
     
     

    Merhaba arkadaşlar benim 2 Adet  tablom var a ve b tablosu kullanıcı a tablosuna insert ederken insert işleminden sonra bir trigger çalışmasını istiyorum triggerde şunu yapmak istiyorum

    örneğin a tablosundaki ADISOYADI = şu'ise  ve  MIKTAR < 10 büyükse bu iki şart sağlanıyorsa

    b tablosunda ADISOYADI  aynıysa durum kolonunu set etmek istiryorum SET durum='1' gibi

    Aşşagıdaki kod çalışmadı nasıl bir kod yazmalıyım arkadaşlar yardım ederseniz çok sevinirim

    CREATE TRIGGER DENEME ON a
    AFTER INSERT
    AS
    BEGIN
    DECLARE @ADISOYADI NVARCHAR(20)
     SELECT @ADISOYADI= ADISOYADI FROM inserted
    IF EXISTS(SELECT MIKTAR FROM a WHERE ADISOYADI=@ADISOYADI AND MIKTAR < 10 )
    BEGIN
       UPDATE b SET durum='1' WHERE ADISOYADI=@ADISOYADI
             ROLLBACK TRANSACTION
       RETURN
    END

Tüm Yanıtlar

  • 21 Mart 2012 Çarşamba 10:39
    Moderatör
     
     
    rollback transaction ? Rollback edeceksen niye update ediyorsun?
  • 21 Mart 2012 Çarşamba 10:52
     
     
    Çetin bey sadece UPDATE  yapmak istiyorum rollback  satırını kaldırdım ama yinede olmadı rica etsem kücük bir örnek yazarmısınız.
  • 21 Mart 2012 Çarşamba 11:31
    Moderatör
     
     Yanıt Kod İçerir

    AdiSoyadi iki tablo arasinda baglanti icin hic de iyi bir kolon gibi durmuyor, onun ornek oldugunu dusunerek ve kodundan senin yapmak istedigini anladigim kadariyla:

    use test;
    go
    
    CREATE TABLE trigTestA
        (
          id INT IDENTITY
                 PRIMARY KEY ,
          adisoyadi VARCHAR(50) ,
          miktar INT
        );
    CREATE TABLE trigTestB
        (
          id INT IDENTITY
                 PRIMARY KEY ,
          adisoyadi VARCHAR(50) ,
          durum INT
        );
    go
    
    INSERT  INTO trigTestB
            ( adisoyadi, durum )
    VALUES  ( 'AtakanVolkan', 0 );
    INSERT  INTO trigTestB
            ( adisoyadi, durum )
    VALUES  ( 'CetinBasoz', 0 );
    GO
    
    CREATE TRIGGER deneme ON trigTestA
        AFTER INSERT
    AS
        BEGIN
            UPDATE  trigTestB
            SET     durum = 1
            FROM    inserted
            WHERE   trigTestB.adisoyadi = INSERTED.adisoyadi
                    AND INSERTED.miktar < 10
        END
    GO
    
    INSERT INTO trigTestA (adisoyadi,miktar) VALUES ('AtakanVolkan',100);
    INSERT INTO trigTestA (adisoyadi,miktar) VALUES ('CetinBasoz',1);
    SELECT * FROM trigTestB;
    INSERT INTO trigTestA (adisoyadi,miktar) VALUES ('AtakanVolkan',5);
    SELECT * FROM trigTestB;

    • Yanıt Olarak İşaretleyen AtakanVolkan 21 Mart 2012 Çarşamba 12:01
    •  
  • 21 Mart 2012 Çarşamba 11:50
     
     

    Çetin bey çok çok tşk ederim .