Rumah > Artikel > pangkalan data > Mengapa Trigger MySQL Saya Tidak Mengemas kini Jadual?
Menyelesaikan masalah Ketidakaktifan Pencetus MySQL
Apabila mencipta pencetus MySQL mudah yang dijangka mengemas kini lajur berdasarkan perubahan dalam lajur lain, ia adalah penting untuk menangani isu-isu yang berpotensi yang mungkin menghalang fungsinya. Satu cabaran biasa ialah ketidakupayaan fungsi tersimpan atau pencetus untuk mengubah suai jadual yang sudah digunakan.
Mesej Ralat: Jadual Digunakan dengan Mendapat Pernyataan
mesej ralat "Tidak dapat mengemas kini jadual pos_table dalam fungsi/pencetus tersimpan kerana ia telah digunakan oleh pernyataan yang menggunakan fungsi/pencetus tersimpan ini" menunjukkan bahawa jadual yang dikemas kini oleh pencetus juga digunakan oleh pernyataan yang mencetuskan operasi. Konflik ini menghalang pencetus daripada melaksanakan dengan betul.
Penyelesaian:
Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan pencetus SEBELUM INSERT dan bukannya SELEPAS KEMASKINI pencetus. SEBELUM INSERT pencetus membenarkan pengubahsuaian kepada nilai yang disisipkan sebelum ia disimpan dalam jadual, menghapuskan konflik dengan pernyataan pemanggilan.
Selain itu, menggunakan kata kunci BAHARU dalam pencetus untuk mengemas kini nilai dalam baris tertentu memastikan bahawa hanya baris yang diubah suai dikemas kini, bukannya keseluruhan jadual seperti yang dicadangkan oleh KEMASKINI yang disediakan penyata.
Memudahkan Pengiraan PTS:
Akhir sekali, perlu diingat bahawa menyimpan nilai PTS dalam lajur yang berasingan mungkin tidak diperlukan. Nilai PTS boleh dikira dengan mudah secara dinamik apabila diperlukan, memudahkan kod dan mengelakkan isu pencetus yang disebutkan di atas.
Atas ialah kandungan terperinci Mengapa Trigger MySQL Saya Tidak Mengemas kini Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!