Mengemas kini Jadual dalam Pencetus Selepas Kemas Kini pada Jadual Yang Sama
Dalam SQL, mengemas kini jadual dalam pencetus selepas kemas kini pada jadual yang sama membentangkan isu yang berpotensi. Ini kerana jadual sudah dikunci untuk operasi kemas kini dan cuba mengakses jadual dalam pencetus yang dilaksanakan sebagai sebahagian daripada transaksi yang sama boleh mengakibatkan konflik.
Untuk memintas sekatan ini, anda boleh mengemas kini lajur yang terjejas dalam pencetus dengan menggunakan pilihan SEBELUM dan bukannya SELEPAS. Ini membolehkan anda mengemas kini lajur jadual sebelum operasi kemas kini asal berlaku, memastikan bahawa perubahan yang diperlukan dibuat pada jadual sebelum transaksi dimuktamadkan.
Pertimbangkan contoh berikut:
CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score FOR EACH ROW BEGIN SET new.votes_total = new.votes_1 + new.votes_2 + new.votes_3 + new.votes_4 + new.votes_5 END ;
Dalam contoh ini, pencetus akan dilaksanakan sebelum setiap operasi kemas kini pada jadual products_score. Ia akan mengira nilai baharu untuk lajur_jumlah undi berdasarkan nilai lajur yang dikemas kini (undi_1 hingga undi_5) dan menyimpannya dalam lajur maya_jumlah_undi baharu yang disediakan oleh konteks pencetus.
Apabila anda mengemas kini jadual , pencetus akan memastikan bahawa lajur votes_total dikemas kini dengan sewajarnya, walaupun kenyataan kemas kini tidak mengemas kini lajur votes_total secara eksplisit sendiri.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kemas Kini Jadual Dengan Selamat dalam Pencetus Selepas Kemas Kini pada Jadual Yang Sama dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!