Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan 'Tidak dapat mengemas kini jadual ... kerana ia sudah digunakan' Ralat dalam Pencetus MySQL?

Bagaimana untuk Menyelesaikan 'Tidak dapat mengemas kini jadual ... kerana ia sudah digunakan' Ralat dalam Pencetus MySQL?

Patricia Arquette
Lepaskan: 2024-12-27 18:51:13
asal
809 orang telah melayarinya

How to Resolve

Gangguan Pencetus semasa Mengemas kini Jadual: Menyelesaikan Isu

Dalam pengaturcaraan pangkalan data, kadangkala perlu mengemas kini lajur jadual menggunakan pencetus selepas operasi kemas kini pada jadual yang sama. Walau bagaimanapun, ini boleh membawa kepada ralat jika pencetus cuba mengemas kini jadual semasa ia sedang dikemas kini.

Pertimbangkan pencetus berikut:

CREATE TRIGGER upd_total_votes AFTER UPDATE ON products_score
FOR EACH ROW
    UPDATE
        products_score 
    SET
        products_score.votes_total =
            (SELECT
                 (votes_1 + votes_2 + votes_3 + votes_4 + votes_5)
             FROM
                 products_score
             WHERE
                 id = new.id)
Salin selepas log masuk

Apabila operasi kemas kini dilakukan menggunakan pencetus ini, ralat "#1442 - Tidak dapat mengemas kini jadual 'products_score' dalam fungsi/pencetus yang disimpan kerana ia telah digunakan oleh pernyataan yang memanggil ini disimpan function/trigger" ditemui.

Untuk menyelesaikan isu ini, tukar pemasaan pencetus kepada SEBELUM dan bukannya SELEPAS. Ini membolehkan pencetus untuk melaksanakan sebelum operasi kemas kini, mengelakkan jadual dikunci semasa kemas kini. Pencetus yang dikemas kini sepatutnya kelihatan seperti ini:

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
;
Salin selepas log masuk

Dengan pencetus yang diubah suai ini, lajur jadual boleh berjaya dikemas kini selepas operasi kemas kini.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'Tidak dapat mengemas kini jadual ... kerana ia sudah digunakan' Ralat dalam Pencetus MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan