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