Forum

AFTER INSERT Trigge...
 
Bildirimler
Hepsini Temizle

AFTER INSERT Trigger Yardımı

2 Yazılar
2 Üyeler
0 Reactions
458 Görüntüleme
(@OsmanAKSU)
Gönderiler: 14
Eminent Member
Konu başlatıcı
 

Öncelikle ne yapmak istediğimi anlatayım ..

 Customer_Career Adında bir tablom var.

ID,CusID,SponsorID,CareerID,PeriodID

Birde Customer_Career_Period adında bir Tablom var

ID,CusID,SponsorID,CareerID,PeriodID,Description,CareerDate

Şimdi müşteri eklendiğinde bu müşterinin sponsor sayısını alıp eğer 15 ise Kariyerini 2 yapıyorum..

Şayet  Spoonsorun Kariyeri 2 ise sponsor olduğu kişilerin sayısını alıp bunlardan 2 tanesi 2 ise bu müşterriyi 3 yapmalıyım..

 Aşağıdaki kodda ne gibi bir hata var bulamıyorumm ..

 

ALTER TRIGGER  [dbo].[KariyerYap]   ON  [dbo].[Customer_Career]  AFTER INSERT
AS
Declare
@Period int,
@CareerID int,
@SponsorID int,
@CusID int,
@Sonuc int,
---------------------------
@Bronz int,
@Silver int,
@Gold int,
@Platin int,
-----------------
@SpID int,
@CarID int
BEGIN
        Select @CusID=CusID,@Period=Period,@SponsorID=SponsorID,@CareerID=CareerID From inserted
        Set        @SONUC=(Select COUNT(*) from Customer_Career where Period=@Period  and CareerID=@CareerID and SponsorID=@SponsorID)
    
        if(@Sonuc = 15)
            Begin
                        Set @CarID=(Select CareerID  from Customer where ID=@SponsorID )
                        Set @SpID= (Select SponsorID From Customer Where ID=@SponsorID)
                        if(@CarID=1)
                        Begin
                            INSERT INTO Customer_Career_Period(CusID,SponsorID,CareerID,Period,CareerDate,Description)
                            Values(@SponsorID,@SpID,2,@Period,GETDATE(),'* Bronz Oldu')    
                            Update Customer Set CareerID=2 Where ID=@SponsorID
                        End
            End    
    While(@SpID = 0 )
    Begin        
        Set @SpID= (Select SponsorID From Customer Where ID=@SponsorID)
        Set @Bronz = (Select COUNT(*) From Customer_Career_Period Where SponsorID=@SpID And CareerID=2 And Period=@Period)
        if(@Bronz = 2 And @Sonuc >= 15)
            Begin

                Set @SponsorID=(Select SponsorID From Customer Where ID=@SpID)
                Update Customer Set CareerID=3 Where ID=@SpID
                INSERT INTO Customer_Career_Period(CusID,SponsorID,CareerID,Period,CareerDate,Description)
                Values(@SpID,@SponsorID,3,@Period,GETDATE(),'** Silver Oldu')
                Set @SpID=(Select SponsorID From Customer Where ID=@SpID)
            End
                       
        Set @SpID= (Select SponsorID From Customer Where ID=@SponsorID)
        Set @Bronz = (Select COUNT(*) From Customer_Career_Period Where SponsorID=@SpID And CareerID=2 And Period=@Period)
        
        if(@Bronz = 3 And @Sonuc >= 20)
            Begin

                Set @SponsorID=(Select SponsorID From Customer Where ID=@SpID)
                Update Customer Set CareerID=4 Where ID=@SpID
                INSERT INTO Customer_Career_Period(CusID,SponsorID,CareerID,Period,CareerDate,Description)
                Values(@SpID,@SponsorID,@CarID,@Period,GETDATE(),'*** Gold Oldu')
                Set @SpID=(Select SponsorID From Customer Where ID=@SpID)

            End
        Set @SpID= (Select SponsorID From Customer Where ID=@SponsorID)
        if @SpID = 0 Break
    End    
END

 
Gönderildi : 16/07/2011 23:45

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

http://msdn.microsoft.com/en-us/library/ms165046(v=vs.80).aspx  adresinde Trigger'larda Visual Studio ile Debug işleminin nasıl yapılabileceğine dair bilgi bulabilirsiniz.

http://msdn.microsoft.com/en-us/library/yet1b7by(v=vs.80).aspx  adresinde de SP'lerde Visual Studio ile Debug işleminin nasıl yapılabileceğine dair bilgi bulabilirsiniz.

 
Gönderildi : 17/07/2011 14:57

Paylaş: