folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Mysql Hatası: Can't Update Table İn Stored Function/Trigger



Mysql Hatası: Can't Update Table İn Stored Function/Trigger

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek

    Mysql'e tam olarak hakim değilim, trigger ve referanslar kullanarak bazı değerleri güncel tutmaya çalışıyorum. Ama delete esnasında triger kullandığım da başlıkta ki hatayı alıyrum, birkaç şey denedim ama çözümü bulamadım. İlgili tablolarım

    Sale(Serial_no,Car_price_Sale_price.....)

    SelectedOption(Seiral_no,Price....)

    SelectedPackage(Serial_no,Price....)

    Car(Serial_no,....)

    selectedoption ve selectedpackage tablalarıma kayıt girdiğimde, sildiğimde yada güncellediğim de ilgili trigger'larla Sale tablomda ki Sale_price değerimi güncelliyorum. Buraya kadar problem yok.

    Sale tablomda ki değer silindiğin de selectedoption ve selectedpackage değerleride silinmesi lazım. Serial_no car tablosunu referans ettiğinden Sale tablosuna ikinci bi referans veremiyorum.

    Bende after delete trigerda ilgili selected option ve package'ları sildirmeyi deniyorum. Ama aşağıda ki hatayı alıyorum.

     

    1442 - Can't update table 'sale' in stored function/trigger because it is already used by statement which invoked this stored


    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ZINDIK
    ZINDIK's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    Hacı burda dediğine göre: http://dev.mysql.com/doc/refman/5.1/en/faqs-triggers.html#qandaitem-B-5-1-9

    "A trigger can access both old and new data in its own table. A trigger can also affect other tables, but it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger."

    Geçici çözüm için: UPDATE statement'ini fonksiyona koyup, trigger'ında çağır demişler. Denemen gerekecek.

    Benzer hatalar için: http://stackoverflow.com/questions/tagged/mysql-error-1442

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek

    update trigerını değilde delete'i bi procedure koymuştum, deniyim onu da.

    edit: yok procedure'de olmadı, farklı bi çözüm yoluna gitmem lazım sanırım. Sale'i sildikten sonra option'ları da sildirmeye çalışyorum, option'larda da silme sırasında silinen sale'in price'inı güncellemeye çalışyor buna da izin vermiyor db.

    Ercan tarafından 23/Ara/13 23:42 tarihinde düzenlenmiştir

    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ZINDIK
    ZINDIK's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    Evet DELETE'i gördüm fakat UPDATE için 1442 hatası almadan geçici çözüm olarak onu belirtmişler.

    Çünkü;

    __________

    MySQL'in o operasyona desteği olmadığı için çözüm için yapısal değişikliğe gitmen gerekecek.

    http://forums.mysql.com/read.php?99,144288,162197#msg-162197

    "You cannot DELETE rows in the table that activated trigger."

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek
    outmost bunu yazdı

    Evet DELETE'i gördüm fakat UPDATE için 1442 hatası almadan geçici çözüm olarak onu belirtmişler.

    Çünkü;

    __________

    MySQL'in o operasyona desteği olmadığı için çözüm için yapısal değişikliğe gitmen gerekecek.

    http://forums.mysql.com/read.php?99,144288,162197#msg-162197

    "You cannot DELETE rows in the table that activated trigger."

    bu arada seni yanlış anlamışım bi önceki post'unda funtion içinde kullan demişsin ben procedure'de denedim, gerçi yine thread bakımından aynıdır.

    edit: sorunu düzelti, after ve before triger'ların mantığını yanlış kurmuşum. Procedure ve funktion çözüm olmuyor.

    yardımın için teşekkürler hocam.

    Ercan tarafından 24/Ara/13 00:33 tarihinde düzenlenmiştir

    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
Toplam Hit: 1288 Toplam Mesaj: 5