SET CELL_01 = (SELECT SUM (CELL_01)
FROM SE_FORM023
WHERE (SE_FORM023.CALISMA_YILI = @XCALISMA_YILI) AND
(SE_FORM023.CALISMA_AYI = @XCALISMA_AYI) AND
(SE_FORM023.SAGLIKOCAGI_ID = @XSAGLIKOCAGI_ID))
SET CELL_02 = ...
böyle bir Update çok sayıda alan için (cell_01, cell_02.....)yapılacak ve koşul kısmı hepsindede aynı olacak
WHERE (SE_FORM023.CALISMA_YILI = @XCALISMA_YILI) AND
(SE_FORM023.CALISMA_AYI = @XCALISMA_AYI) AND
(SE_FORM023.SAGLIKOCAGI_ID = @XSAGLIKOCAGI_ID))
koşul kısmını kısaltmak için koşulu değişkenlere atayarak denedim olmadı .. @XCALISMA_YILI, @XCALISMA_AYI, @XSAGLIKOCAGI_ID değişkelnleri (deleted) tablosundan elde ettiğim değişkenler ..
nasıl bi yol izlemeliyim .. forum camiasına selamlar
UPDATE TABLO
SET CELL_01, CELL_02, CELL_03,.. =
(SELECT SUM(CELL_01), SUM(CELL_02), SUM(CELL_03), ...
FROM SE_FORM023
WHERE (SE_FORM023.CALISMA_YILI = @XCALISMA_YILI)
AND (SE_FORM023.CALISMA_AYI = @XCALISMA_AYI)
AND (SE_FORM023.SAGLIKOCAGI_ID = @XSAGLIKOCAGI_ID))
Bu arada izninizle kodu biraz düzenledim, benim için kodun okunabilirliği doğruluğundan önde gelir. Okunabilirliği yükseldikçe hatayı saklama özelliği azalır
Dikkatimi çeken UPDATE edilecek tabloda tüm kayıtlardaki CELL alanları mı değiştirilecek Yoksa herhangi bir koşul koymamışsınız
Veridiğiniz şekilde trigger hata verdi, hocam .. Benim yapmak istediğim aynı yapıdaki 5-10 adet tabloyu Tek bir toplam tablosunda birleştirmekti .. Bu toplama işleminide her update olayında toplamların Toplam tablosuna yazılması şeklinde yapmak istiyordum .. Updatenin şartı aşağıdaydı onu koymamıştım ..
TRIGGER de kullanırken ld (önceki değer) ve :new (yeni değer) olaylarına dikkat etmek gerekir Ayrıca HATA nın bir adı olmalı
En önemlisi bir Update Triggerinde aynı tabloya UPDATE yapılamaz
Recep, M$-SQL Server'da :OLD yada :NEW diye değişkenler yok ki, neye dikkat etsin Onun yerine CURSOR açıp DELETED ve INSERTED tablolarından kayıt çekerek yapması lazım bazı işlemlerini.
Ayrıca M$-SQL Server'ın tetiklenme mekanizması sadece AFTER'da vardır ve hem BULK (Multi Row) hem de tek kayıtta sadece bir defa tetiklenir.
Hocam ben de sadece olaya dikkat çekmek için standart sql ile ilgili benzetme yaptım. Doğrusu sql-server kullanmıyorum. Aynı tabloya kayıt yapılıyorsa dikkat çekmek istedim. Bir de olay dediğin gibi çok ortadan alınmış tam anlaşılamıyor
UPDATE ACILMIS_SARF
SET
HARCAMA_TUTARI=HARCAMA_MIKTARI*(SELECT DIGER_CIKIS_TUTARI/DIGER_CIKIS_MIKTARI
FROM SUS
WHERE (SUS.BUTCE_KODU=61)
AND (ACILMIS_SARF.CINS = SUS.URUN_KODU)
AND (ACILMIS_SARF.YIL = SUS.YIL)
AND (SUS.DIGER_CIKIS_MIKTARI > 0)
AND (ACILMIS_SARF.AY = SUS.AY)
)
, S_HARCAMA_TUTARI=HARCAMA_MIKTARI*(SELECT S_DIGER_CIKIS_TUTARI/DIGER_CIKIS_MIKTARI
FROM SUS
WHERE (SUS.BUTCE_KODU=61)
AND (ACILMIS_SARF.CINS = SUS.URUN_KODU)
AND (ACILMIS_SARF.YIL = SUS.YIL)
AND (SUS.DIGER_CIKIS_MIKTARI > 0)
AND (ACILMIS_SARF.AY = SUS.AY)
)
WHERE EXISTS
(SELECT * FROM SUS
WHERE (SUS.BUTCE_KODU=61)
AND (ACILMIS_SARF.CINS = SUS.URUN_KODU)
AND (ACILMIS_SARF.YIL = SUS.YIL)
AND (SUS.DIGER_CIKIS_MIKTARI > 0)
AND (ACILMIS_SARF.AY = SUS.AY)
)
AND (ACILMIS_SARF.BUTCE_KODU = 61)