Merhaba ; TBLEMANETIPTCH Mükerrer kayıt atıyor bir kere kaydettikten sonra update edildikçe üzerine nasıl yazdırabilirim?
ALTER TRIGGER [dbo].[EmanetCariHareketKayit]
ON [dbo].[TBLCAHAR] --WITH ENCRYPTION
FOR UPDATE,DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ACTIONTYPE char(1)=CASE WHEN NOT EXISTS(SELECT * FROM INSERTED) THEN 'D' -- DELETE
WHEN NOT EXISTS(SELECT * FROM DELETED) THEN 'I' -- INSERT
ELSE 'U' -- UPDATE
END
IF @ACTIONTYPE ='U'
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM='Düzeltilen Cari Hareket'
FROM DELETED WHERE INC_KEY_NUMBER=INC_KEY_NUMBER
ALTER TRIGGER [dbo].[EmanetCariHareketKayit]
ON [dbo].[TBLCAHAR] --WITH ENCRYPTION
FOR UPDATE,DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ACTIONTYPE char(1)=CASE WHEN NOT EXISTS(SELECT * FROM INSERTED) THEN 'D' -- DELETE
WHEN NOT EXISTS(SELECT * FROM DELETED) THEN 'I' -- INSERT
ELSE 'U' -- UPDATE
END
IF @ACTIONTYPE ='U'
BEGIN
DELETE FROM TBLEMANETIPTCH
WHERE CARI_KOD IN (SELECT CARI_KOD FROM DELETED)
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM='Düzeltilen Cari Hareket'
FROM DELETED WHERE INC_KEY_NUMBER=INC_KEY_NUMBER
END
Serdar kardeşim Merhaba; Ben şu şekilde Düzeltilen kaydı TBLEMANETCH tablosuna yazdırıyorum sonrasında düzeltme olursa başka kayıt atmadan üzerinde düzeltmede yapıyorum fakat silme kısmında sorunum var sildiğim zaman TBLCAHAR dan silip , silinen kaydı "İptal edilen Kayıt" diye tabloya atırmak istiyorum bir türlü beceremedim yardımcı olur musun?
ALTER TRIGGER [dbo].[EmanetCariHareketKayit] ON [dbo].[TBLCAHAR] --WITH ENCRYPTION
FOR UPDATE,INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ACTIONTYPE char(1)=CASE WHEN NOT EXISTS(SELECT * FROM INSERTED) THEN 'D' -- DELETE
WHEN NOT EXISTS(SELECT * FROM DELETED) THEN 'I' -- INSERT
ELSE 'U' -- UPDATE
END
IF @ACTIONTYPE ='U'
UPDATE TBLEMANETIPTCH SET SUBE_KODU=INSERTED.SUBE_KODU,CARI_KOD=INSERTED.CARI_KOD,TARIH=INSERTED.TARIH,VADE_TARIHI=INSERTED.VADE_TARIHI,BELGE_NO=INSERTED.BELGE_NO,
ACIKLAMA=INSERTED.ACIKLAMA,HKA=INSERTED.HKA,BORC=INSERTED.BORC,ALACAK=INSERTED.ALACAK,BAKIYE=INSERTED.BAKIYE,DOVIZ_TURU=INSERTED.DOVIZ_TURU,DOVIZ_TUTAR=INSERTED.DOVIZ_TUTAR,
RAPOR_KODU=INSERTED.RAPOR_KODU,F9SC=INSERTED.F9SC,HAREKET_TURU=INSERTED.HAREKET_TURU,MIKTAR=INSERTED.MIKTAR,ILAVE_RAPOR_KODU=INSERTED.ILAVE_RAPOR_KODU,UPDATE_KODU=INSERTED.UPDATE_KODU,
KAPATILMIS_TUTAR=INSERTED.KAPATILMIS_TUTAR,ODEME_GUNU=INSERTED.ODEME_GUNU,FIRMA_DOVIZ_TIPI=INSERTED.FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI=INSERTED.FIRMA_DOVIZ_TUTARI,PLASIYER_KODU=INSERTED.PLASIYER_KODU,
ENT_REF_KEY=INSERTED.ENT_REF_KEY,INC_KEY=INSERTED.INC_KEY_NUMBER,RAPOR_KODU2=INSERTED.RAPOR_KODU2,DUZELTMETARIHI=INSERTED.DUZELTMETARIHI,S_YEDEK1=INSERTED.S_YEDEK1,S_YEDEK2=INSERTED.S_YEDEK2,
F_YEDEK1=INSERTED.F_YEDEK1,F_YEDEK2=INSERTED.F_YEDEK2,C_YEDEK1=INSERTED.C_YEDEK1,C_YEDEK2=INSERTED.C_YEDEK2,B_YEDEK1=INSERTED.B_YEDEK1,I_YEDEK1=INSERTED.I_YEDEK1,L_YEDEK1=INSERTED.L_YEDEK1,
D_YEDEK1=INSERTED.D_YEDEK1,PROJE_KODU=INSERTED.PROJE_KODU,ONAYTIPI=INSERTED.ONAYTIPI,ONAYNUM=INSERTED.ONAYNUM,BAGLANTI_NO=INSERTED.BAGLANTI_NO FROM TBLEMANETIPTCH
INNER JOIN INSERTED ON TBLEMANETIPTCH.INC_KEY=INSERTED.INC_KEY_NUMBER
WHERE TBLEMANETIPTCH.INC_KEY=INSERTED.INC_KEY_NUMBER
IF @@ROWCOUNT=0
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY_NUMBER,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM='Düzeltilen Cari Hareket'
FROM INSERTED WHERE INC_KEY_NUMBER=INC_KEY_NUMBER
IF @ACTIONTYPE ='D'
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
D.SUBE_KODU,D.CARI_KOD,D.TARIH,D.VADE_TARIHI,D.BELGE_NO,D.ACIKLAMA,D.HKA,D.BORC,D.ALACAK,D.BAKIYE,D.DOVIZ_TURU,D.DOVIZ_TUTAR,D.RAPOR_KODU,D.
F9SC,D.HAREKET_TURU,D.MIKTAR,D.ILAVE_RAPOR_KODU,D.UPDATE_KODU,D.KAPATILMIS_TUTAR,D.ODEME_GUNU,D.FIRMA_DOVIZ_TIPI,D.FIRMA_DOVIZ_TUTARI,D.
PLASIYER_KODU,D.ENT_REF_KEY,D.INC_KEY_NUMBER,D.RAPOR_KODU2,D.DUZELTMETARIHI,D.S_YEDEK1,D.S_YEDEK2,D.F_YEDEK1,D.F_YEDEK2,D.C_YEDEK1,D.
C_YEDEK2,D.B_YEDEK1,D.I_YEDEK1,D.L_YEDEK1,D.D_YEDEK1,D.PROJE_KODU,D.ONAYTIPI,D.ONAYNUM,D.BAGLANTI_NO,DURUM='İptal Edilen Cari Hareket'
FROM INSERTED D
DELETE TBLEMANETIPTCH FROM TBLEMANETIPTCH,deleted WHERE TBLEMANETIPTCH.INC_KEY_NUMBER=deleted.INC_KEY_NUMBER
End
Merhaba deleted tablosu yerine sanırım inserted yazmıssın.Belittğim yeri değiştir. Birde BEGIN bloguna alman gerek. Çünkü her iki durum aynı şarta bağlı.
IF @ACTIONTYPE ='D'
BEGIN
INSERT INTO TBLEMANETIPTCH (SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
D.SUBE_KODU,D.CARI_KOD,D.TARIH,D.VADE_TARIHI,D.BELGE_NO,D.ACIKLAMA,D.HKA,D.BORC,D.ALACAK,D.BAKIYE,D.DOVIZ_TURU,D.DOVIZ_TUTAR,D.RAPOR_KODU,D.
F9SC,D.HAREKET_TURU,D.MIKTAR,D.ILAVE_RAPOR_KODU,D.UPDATE_KODU,D.KAPATILMIS_TUTAR,D.ODEME_GUNU,D.FIRMA_DOVIZ_TIPI,D.FIRMA_DOVIZ_TUTARI,D.
PLASIYER_KODU,D.ENT_REF_KEY,D.INC_KEY_NUMBER,D.RAPOR_KODU2,D.DUZELTMETARIHI,D.S_YEDEK1,D.S_YEDEK2,D.F_YEDEK1,D.F_YEDEK2,D.C_YEDEK1,D.
C_YEDEK2,D.B_YEDEK1,D.I_YEDEK1,D.L_YEDEK1,D.D_YEDEK1,D.PROJE_KODU,D.ONAYTIPI,D.ONAYNUM,D.BAGLANTI_NO,DURUM='İptal Edilen Cari Hareket'
FROM INSERTED D --BURASI DELETED OLACAK
--bu satırı neden yazdın? once ekleyıp sonra siliyorsun. Önce silip sonra eklemen gerekmez mi?
DELETE TBLEMANETIPTCH FROM TBLEMANETIPTCH,deleted WHERE TBLEMANETIPTCH.INC_KEY_NUMBER=deleted.INC_KEY_NUMBER
END
(23-12-2020, Saat: 20:21)serdar Adlı Kullanıcıdan Alıntı: Merhaba deleted tablosu yerine sanırım inserted yazmıssın.Belittğim yeri değiştir. Birde BEGIN bloguna alman gerek. Çünkü her iki durum aynı şarta bağlı.
IF @ACTIONTYPE ='D'
BEGIN
INSERT INTO TBLEMANETIPTCH (SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
D.SUBE_KODU,D.CARI_KOD,D.TARIH,D.VADE_TARIHI,D.BELGE_NO,D.ACIKLAMA,D.HKA,D.BORC,D.ALACAK,D.BAKIYE,D.DOVIZ_TURU,D.DOVIZ_TUTAR,D.RAPOR_KODU,D.
F9SC,D.HAREKET_TURU,D.MIKTAR,D.ILAVE_RAPOR_KODU,D.UPDATE_KODU,D.KAPATILMIS_TUTAR,D.ODEME_GUNU,D.FIRMA_DOVIZ_TIPI,D.FIRMA_DOVIZ_TUTARI,D.
PLASIYER_KODU,D.ENT_REF_KEY,D.INC_KEY_NUMBER,D.RAPOR_KODU2,D.DUZELTMETARIHI,D.S_YEDEK1,D.S_YEDEK2,D.F_YEDEK1,D.F_YEDEK2,D.C_YEDEK1,D.
C_YEDEK2,D.B_YEDEK1,D.I_YEDEK1,D.L_YEDEK1,D.D_YEDEK1,D.PROJE_KODU,D.ONAYTIPI,D.ONAYNUM,D.BAGLANTI_NO,DURUM='İptal Edilen Cari Hareket'
FROM INSERTED D --BURASI DELETED OLACAK
--bu satırı neden yazdın? once ekleyıp sonra siliyorsun. Önce silip sonra eklemen gerekmez mi?
DELETE TBLEMANETIPTCH FROM TBLEMANETIPTCH,deleted WHERE TBLEMANETIPTCH.INC_KEY_NUMBER=deleted.INC_KEY_NUMBER
END
Serdar kardeşim dediğin şekilde düzenlemeyi yaptım sadece şöyle bir sorun var, mesela kaydı sildim TBLEMANETIPTCH tablosuna hem sildiğim kaydı hem de farklı bir kayıt daha atıyor onu da düzeltilen kayıt olarak kaydediyor.
ALTER TRIGGER [dbo].[EmanetCariHareketKayit] ON [dbo].[TBLCAHAR] --WITH ENCRYPTION
FOR UPDATE,DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ACTIONTYPE char(1)=CASE WHEN NOT EXISTS(SELECT * FROM INSERTED) THEN 'D' -- DELETE
WHEN NOT EXISTS(SELECT * FROM DELETED) THEN 'I' -- INSERT
ELSE 'U' -- UPDATE
END
IF @ACTIONTYPE ='U'
Begin
UPDATE TBLEMANETIPTCH SET SUBE_KODU=INSERTED.SUBE_KODU,CARI_KOD=INSERTED.CARI_KOD,TARIH=INSERTED.TARIH,VADE_TARIHI=INSERTED.VADE_TARIHI,BELGE_NO=INSERTED.BELGE_NO,
ACIKLAMA=INSERTED.ACIKLAMA,HKA=INSERTED.HKA,BORC=INSERTED.BORC,ALACAK=INSERTED.ALACAK,BAKIYE=INSERTED.BAKIYE,DOVIZ_TURU=INSERTED.DOVIZ_TURU,DOVIZ_TUTAR=INSERTED.DOVIZ_TUTAR,
RAPOR_KODU=INSERTED.RAPOR_KODU,F9SC=INSERTED.F9SC,HAREKET_TURU=INSERTED.HAREKET_TURU,MIKTAR=INSERTED.MIKTAR,ILAVE_RAPOR_KODU=INSERTED.ILAVE_RAPOR_KODU,UPDATE_KODU=INSERTED.UPDATE_KODU,
KAPATILMIS_TUTAR=INSERTED.KAPATILMIS_TUTAR,ODEME_GUNU=INSERTED.ODEME_GUNU,FIRMA_DOVIZ_TIPI=INSERTED.FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI=INSERTED.FIRMA_DOVIZ_TUTARI,PLASIYER_KODU=INSERTED.PLASIYER_KODU,
ENT_REF_KEY=INSERTED.ENT_REF_KEY,INC_KEY=INSERTED.INC_KEY_NUMBER,RAPOR_KODU2=INSERTED.RAPOR_KODU2,DUZELTMETARIHI=INSERTED.DUZELTMETARIHI,S_YEDEK1=INSERTED.S_YEDEK1,S_YEDEK2=INSERTED.S_YEDEK2,
F_YEDEK1=INSERTED.F_YEDEK1,F_YEDEK2=INSERTED.F_YEDEK2,C_YEDEK1=INSERTED.C_YEDEK1,C_YEDEK2=INSERTED.C_YEDEK2,B_YEDEK1=INSERTED.B_YEDEK1,I_YEDEK1=INSERTED.I_YEDEK1,L_YEDEK1=INSERTED.L_YEDEK1,
D_YEDEK1=INSERTED.D_YEDEK1,PROJE_KODU=INSERTED.PROJE_KODU,ONAYTIPI=INSERTED.ONAYTIPI,ONAYNUM=INSERTED.ONAYNUM,BAGLANTI_NO=INSERTED.BAGLANTI_NO FROM TBLEMANETIPTCH
INNER JOIN INSERTED ON TBLEMANETIPTCH.INC_KEY=INSERTED.INC_KEY_NUMBER
WHERE TBLEMANETIPTCH.INC_KEY=INSERTED.INC_KEY_NUMBER
End
IF @@ROWCOUNT=0
Begin
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY_NUMBER,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM='Düzeltilen Cari Hareket'
FROM INSERTED WHERE INC_KEY_NUMBER=INSERTED.INC_KEY_NUMBER
End
End
IF @ACTIONTYPE ='D'
BEGIN
INSERT INTO TBLEMANETIPTCH (SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
D.SUBE_KODU,D.CARI_KOD,D.TARIH,D.VADE_TARIHI,D.BELGE_NO,D.ACIKLAMA,D.HKA,D.BORC,D.ALACAK,D.BAKIYE,D.DOVIZ_TURU,D.DOVIZ_TUTAR,D.RAPOR_KODU,D.
F9SC,D.HAREKET_TURU,D.MIKTAR,D.ILAVE_RAPOR_KODU,D.UPDATE_KODU,D.KAPATILMIS_TUTAR,D.ODEME_GUNU,D.FIRMA_DOVIZ_TIPI,D.FIRMA_DOVIZ_TUTARI,D.
PLASIYER_KODU,D.ENT_REF_KEY,D.INC_KEY_NUMBER,D.RAPOR_KODU2,D.DUZELTMETARIHI,D.S_YEDEK1,D.S_YEDEK2,D.F_YEDEK1,D.F_YEDEK2,D.C_YEDEK1,D.
C_YEDEK2,D.B_YEDEK1,D.I_YEDEK1,D.L_YEDEK1,D.D_YEDEK1,D.PROJE_KODU,D.ONAYTIPI,D.ONAYNUM,D.BAGLANTI_NO,DURUM='İptal Edilen Cari Hareket'
FROM DELETED D WHERE D.INC_KEY_NUMBER=D.INC_KEY_NUMBER
End
INC_KEY de tek kayıt "12426" sildim peşine "12581" kaydetti.
"13717" ilk önce düzelttim kaydetti sonra aynı kaydı sildim "7952" kaydetti. Anlayamadım. INC_KEY_NUMBER eşitledim yine olmadı.
Merhaba sen iki defa kayıt yapmıssın. asağıdakı gıbı olması lazım ama bir sorun var.
EmanetCariHareketKayit ve TBLEMANETIPTCH tablosu hangı alan ıle eslesıyor? EmanetCariHareketKayit tablondakı primary sutun nedir?
Eğer INC_KEY primary alan ise, TBLEMANETIPTCH tablosunda INC_KEY diye bır alanın varsa bu otomatık olmamalı.
EmanetCariHareketKayit tablosunda INC_KEY otomatık olur ve TBLEMANETIPTCH tablosuna eklenır.
ıkı tablonun yapısını belırtırsen daha cok yardımcı olurum.
ALTER TRIGGER [dbo].[EmanetCariHareketKayit] ON [dbo].[TBLCAHAR] --WITH ENCRYPTION
FOR UPDATE,DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ACTIONTYPE char(1)=CASE WHEN NOT EXISTS(SELECT * FROM INSERTED) THEN 'D' -- DELETE
WHEN NOT EXISTS(SELECT * FROM DELETED) THEN 'I' -- INSERT
ELSE 'U' -- UPDATE
END
IF @ACTIONTYPE ='U'
Begin
DELETE FROM TBLEMANETIPTCH
WHERE INC_KEY_NUMBER IN (SELECT INC_KEY_NUMBER FROM INSERTED)
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY_NUMBER,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,'Düzeltilen Cari Hareket'
FROM INSERTED I
End
IF @ACTIONTYPE ='D'
BEGIN
DELETE FROM TBLEMANETIPTCH
WHERE INC_KEY_NUMBER IN (SELECT INC_KEY_NUMBER FROM DELETED)
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
D.SUBE_KODU,D.CARI_KOD,D.TARIH,D.VADE_TARIHI,D.BELGE_NO,D.ACIKLAMA,D.HKA,D.BORC,D.ALACAK,D.BAKIYE,D.DOVIZ_TURU,D.DOVIZ_TUTAR,D.RAPOR_KODU,D.
F9SC,D.HAREKET_TURU,D.MIKTAR,D.ILAVE_RAPOR_KODU,D.UPDATE_KODU,D.KAPATILMIS_TUTAR,D.ODEME_GUNU,D.FIRMA_DOVIZ_TIPI,D.FIRMA_DOVIZ_TUTARI,D.
PLASIYER_KODU,D.ENT_REF_KEY,D.INC_KEY_NUMBER,D.RAPOR_KODU2,D.DUZELTMETARIHI,D.S_YEDEK1,D.S_YEDEK2,D.F_YEDEK1,D.F_YEDEK2,D.C_YEDEK1,D.
C_YEDEK2,D.B_YEDEK1,D.I_YEDEK1,D.L_YEDEK1,D.D_YEDEK1,D.PROJE_KODU,D.ONAYTIPI,D.ONAYNUM,D.BAGLANTI_NO,DURUM='İptal Edilen Cari Hareket'
FROM DELETED D
End
(24-12-2020, Saat: 10:00)serdar Adlı Kullanıcıdan Alıntı: Merhaba sen iki defa kayıt yapmıssın. asağıdakı gıbı olması lazım ama bir sorun var.
EmanetCariHareketKayit ve TBLEMANETIPTCH tablosu hangı alan ıle eslesıyor? EmanetCariHareketKayit tablondakı primary sutun nedir?
Eğer INC_KEY primary alan ise, TBLEMANETIPTCH tablosunda INC_KEY diye bır alanın varsa bu otomatık olmamalı.
EmanetCariHareketKayit tablosunda INC_KEY otomatık olur ve TBLEMANETIPTCH tablosuna eklenır.
ıkı tablonun yapısını belırtırsen daha cok yardımcı olurum.
ALTER TRIGGER [dbo].[EmanetCariHareketKayit] ON [dbo].[TBLCAHAR] --WITH ENCRYPTION
FOR UPDATE,DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ACTIONTYPE char(1)=CASE WHEN NOT EXISTS(SELECT * FROM INSERTED) THEN 'D' -- DELETE
WHEN NOT EXISTS(SELECT * FROM DELETED) THEN 'I' -- INSERT
ELSE 'U' -- UPDATE
END
IF @ACTIONTYPE ='U'
Begin
DELETE FROM TBLEMANETIPTCH
WHERE INC_KEY_NUMBER IN (SELECT INC_KEY_NUMBER FROM INSERTED)
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY_NUMBER,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,'Düzeltilen Cari Hareket'
FROM INSERTED I
End
IF @ACTIONTYPE ='D'
BEGIN
DELETE FROM TBLEMANETIPTCH
WHERE INC_KEY_NUMBER IN (SELECT INC_KEY_NUMBER FROM DELETED)
INSERT INTO TBLEMANETIPTCH
(SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK,BAKIYE,DOVIZ_TURU,DOVIZ_TUTAR,RAPOR_KODU,
F9SC,HAREKET_TURU,MIKTAR,ILAVE_RAPOR_KODU,UPDATE_KODU,KAPATILMIS_TUTAR,ODEME_GUNU,FIRMA_DOVIZ_TIPI,FIRMA_DOVIZ_TUTARI,
PLASIYER_KODU,ENT_REF_KEY,INC_KEY,RAPOR_KODU2,DUZELTMETARIHI,S_YEDEK1,S_YEDEK2,F_YEDEK1,F_YEDEK2,C_YEDEK1,
C_YEDEK2,B_YEDEK1,I_YEDEK1,L_YEDEK1,D_YEDEK1,PROJE_KODU,ONAYTIPI,ONAYNUM,BAGLANTI_NO,DURUM)
SELECT
D.SUBE_KODU,D.CARI_KOD,D.TARIH,D.VADE_TARIHI,D.BELGE_NO,D.ACIKLAMA,D.HKA,D.BORC,D.ALACAK,D.BAKIYE,D.DOVIZ_TURU,D.DOVIZ_TUTAR,D.RAPOR_KODU,D.
F9SC,D.HAREKET_TURU,D.MIKTAR,D.ILAVE_RAPOR_KODU,D.UPDATE_KODU,D.KAPATILMIS_TUTAR,D.ODEME_GUNU,D.FIRMA_DOVIZ_TIPI,D.FIRMA_DOVIZ_TUTARI,D.
PLASIYER_KODU,D.ENT_REF_KEY,D.INC_KEY_NUMBER,D.RAPOR_KODU2,D.DUZELTMETARIHI,D.S_YEDEK1,D.S_YEDEK2,D.F_YEDEK1,D.F_YEDEK2,D.C_YEDEK1,D.
C_YEDEK2,D.B_YEDEK1,D.I_YEDEK1,D.L_YEDEK1,D.D_YEDEK1,D.PROJE_KODU,D.ONAYTIPI,D.ONAYNUM,D.BAGLANTI_NO,DURUM='İptal Edilen Cari Hareket'
FROM DELETED D
End
Serdar kardeşim Allah senden razı olsun. Hakkını helal et.
Tablo yapısı şöyle;
İki tane Tablo var
TBLCAHAR tablosu kayıtların tutulduğu alan INC_KEY_NUMBER alanı Primary
TBLEMANETIPTCH buradaki INC_KEY primary alan değil.
TBLCAHAR dan TBLEMANETIPTCH kayıt atıyor hem silinen hem de düzeltilen. TBLCAHAR daki INC_KEY_NUMBER alanı aynen INC_KEY kaydediyor.
Düzeltme ve Kayıt kısmı doğru sadece silmede şöyle yine silinen kayıttan sonra farklı bir kayıt atıyor.
En son attigim kodu aynen kullan. Ordaki if @@rowcount satirini cikarttim. Fazladan kayit atmamasi lazim. Acaba application tarafinda delete yaptiktan sonra update kodu gibi birsey calisyor olabilirmi?