--ÇİFT KAYIT STOKKARTLARI LİSTESİNİ VERİR.
select * from STOKKARTI SK1 WHERE Kodu in (SELECT Kodu FROM STOKKARTI group by Kodu having count(Kodu)>1)
 AND NoId =(SELECT MIN(NoId) FROM STOKKARTI SK3 where SK3.Kodu=SK1.Kodu)
select * from STOKKARTI SK1 WHERE Kodu in (SELECT Kodu FROM STOKKARTI group by Kodu having count(Kodu)>1)

--ÇİFT KAYIT STOKKARTLARINDAN İLK AÇILANLARI SİLER. EN SON KAYIT KALIR.
DELETE from STOKKARTI  WHERE Kodu in (SELECT Kodu FROM STOKKARTI group by Kodu having count(Kodu)>1)
 AND NoId <>(SELECT max(NoId) FROM STOKKARTI SK3 where SK3.Kodu=STOKKARTI.Kodu)

DELETE from StokFiyat WHERE Kodu in (SELECT Kodu FROM StokFiyat group by Kodu having count(Kodu)>1)
 AND NoId <>(SELECT max(NoId) FROM StokFiyat SK3 where SK3.Kodu= StokFiyat.Kodu)

 --stokkartı olmayan stokfiyat' ları silme
 
 DELETE FROM  StokFiyat   WHERE NoId in (
 select NoId  from StokFiyat SF  WHERE   not exists (Select * from STOKKARTI SK WHERE SK.Kodu=SF.Kodu))


 ---STOKKARTI VE STOK YAPISINI KODU MÜKERRER KAYITTAN KURTARMAK İÇİN UNIQUE YAPALI. SONRA CARİ KART KASA VS YAPALIM.


ALTER TABLE STOKKARTI ADD CONSTRAINT  STK_KOD UNIQUE (Kodu)

ALTER TABLE StokFiyat ADD CONSTRAINT  STKFyt_KOD UNIQUE (Kodu)



---HAREKETİ OLAN KARTI SİLDİRMEMEK

CREATE TRIGGER [dbo].[TR_SN_STK_STH_KONTROL] ON [dbo].[STOKKARTI] AFTER DELETE 
AS
 BEGIN 
DECLARE @Kodu varchar (50)

SELECT @Kodu= Kodu FROM DELETED
 IF EXISTS(SELECT * FROM STOKHAR WHERE StokKodu=@Kodu) 
BEGIN 
Print 'Ürün Hareketlerde mevcut, silinenmez'

ROLLBACK TRANSACTION 
RETURN
END
else
 DELETE FROM StokFiyat where Kodu=@Kodu
 delete from StokDB where StokKodu=@Kodu
END