delete triggerda cursor tanımlamada bütün tablo dönüyor.

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
loribnaczo54
Üye
Mesajlar: 60
Kayıt: 24 Nis 2006 07:42
Konum: Bahçelievler/İst.

delete triggerda cursor tanımlamada bütün tablo dönüyor.

Mesaj gönderen loribnaczo54 »

SQL delete trigger ında silinen kayıtları ancak cursor tanımlayarak görülebildiğini araştırmalar sonucu öğrendim. fakat bir yanlışlık yokmu şu şekilde bir deneme yaptım ve hareket tablosundan sadece 2 satır sildim bu durumda cursor sadece o iki satırı döndürmesi gerekmiyormu oysa o bütün tabloyu tarıyor.? bu müthiş bir yavaşlık-ağırlık yaratmaz mı.?

Kod: Tümünü seç

CREATE Trigger  SilindigindeCalis
 On dbo. HareketTable1
 
For DELETE  AS 				 		
BEGIN

declare 	
	@kodu 	varchar(30)

DECLARE BAKIYE CURSOR 					
   READ_ONLY FAST_FORWARD
   FOR           
   select  kodu  from  HareketTable1 deleted
  OPEN BAKIYE 
   FETCH NEXT FROM BAKIYE  INTO  @kodu
       WHILE @@fetch_status = 0						
        BEGIN   
	insert into t_deneme (kodu,tip) values (@kodu,'delete') -- bu satır hangi alanların döndüğünü t_deneme tablosuna kaydediyor.
         FETCH NEXT FROM BAKIYE  INTO  @kodu
        END
CLOSE BAKIYE 								
DEALLOCATE BAKIYE 

END

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: delete triggerda cursor tanımlamada bütün tablo dönüyor.

Mesaj gönderen sabanakman »

Kod: Tümünü seç

select  kodu  from  HareketTable1 deleted
sorgusu ile aslında tüm HareketTable1 tablosunu deleted takma ismiyle getiren bir sorgu olmuş. Bunun yerine sadece

Kod: Tümünü seç

select  kodu  from  deleted
şeklinde yazmanız yeterli.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
loribnaczo54
Üye
Mesajlar: 60
Kayıt: 24 Nis 2006 07:42
Konum: Bahçelievler/İst.

Re: delete triggerda cursor tanımlamada bütün tablo dönüyor.

Mesaj gönderen loribnaczo54 »

sabanakman yazdı:

Kod: Tümünü seç

select  kodu  from  HareketTable1 deleted
sorgusu ile aslında tüm HareketTable1 tablosunu deleted takma ismiyle getiren bir sorgu olmuş. Bunun yerine sadece

Kod: Tümünü seç

select  kodu  from  deleted
şeklinde yazmanız yeterli.
teşekkür ederim. Sorunum bu şekilde düzeldi. :bravo:
Cevapla