Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menetapkan Nilai Medan kepada IDnya dalam MySQL Menggunakan Pencetus?
MySQL Trigger untuk Menetapkan Nilai Medan kepada ID
Dalam MySQL, tidak mungkin untuk mengemas kini medan secara langsung kepada nilai IDnya menggunakan pencetus. Ini kerana pencetus dilaksanakan sebelum atau selepas baris dimasukkan, dikemas kini atau dipadamkan, tetapi sebelum ID kenaikan automatik dijana.
Untuk mencapai gelagat yang diingini, anda boleh menggunakan penyelesaian berikut:
Berikut ialah pernyataan MySQL untuk pencetus:
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
Malangnya, pencetus ini tidak akan berfungsi untuk tingkah laku yang diingini kerana dalam fasa SEBELUM INSERT, nilai ID yang dijana secara automatik belum dijana lagi. Oleh itu, jika group_id adalah batal, ia akan lalai kepada NEW.id, yang sentiasa 0.
Menukar picu kepada api semasa fasa SELEPAS INSERT tidak akan berfungsi sama ada, kerana anda tidak boleh mengubah suai nilai lajur selepas satu baris telah dimasukkan.
Satu-satunya penyelesaian adalah dengan melakukan sisipan dan kemudian segera mengemas kini nilai group_id jika tidak set:
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Nilai Medan kepada IDnya dalam MySQL Menggunakan Pencetus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!