Pencetus MySQL untuk Mengemas kini Medan Berdasarkan IDnya
Menentukan sama ada pencetus boleh digunakan untuk menetapkan nilai medan secara automatik kepada IDnya memerlukan penerokaan pelbagai aspek.
Pencetus Definisi
Sintaks MySQL untuk pencetus yang mengemas kini medan sebelum sisipan berdasarkan syarat adalah seperti berikut:
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EACH ROW BEGIN IF NEW.group_id IS NULL THEN SET NEW.group_id = NEW.id; END IF; END;
Had Pencetus
Walau bagaimanapun, pendekatan ini menghadapi had. Dalam fasa BEFORE INSERT, nilai ID belum lagi tersedia, jadi jika group_id ialah NULL, ia lalai kepada 0.
Mengubah suai nilai dalam lajur tidak dibenarkan dalam fasa AFTER INSERT, menjadikannya tidak layak untuk ini tujuan.
Penyelesaian Alternatif
Disebabkan Batasan MySQL, penyelesaian pencetus tulen tidak boleh dilaksanakan. Sebaliknya, pendekatan gabungan yang melibatkan kedua-dua sisipan dan kemas kini segera boleh digunakan:
Pendekatan ini memastikan bahawa medan group_id ditetapkan dengan betul untuk kedua-dua senario: apabila dinyatakan dan apabila ditinggalkan.
Atas ialah kandungan terperinci Bolehkah MySQL Trigger Secara Automatik Menetapkan Nilai Medan kepada IDnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!