Rumah > Artikel > pangkalan data > Bagaimana untuk Mengubah Medan kepada ID Dijana Auto dalam MySQL Menggunakan Pencetus?
MySQL Trigger to Default Field to the Value of Auto-Generated ID
Dalam MySQL, adalah mungkin untuk mencipta pencetus untuk melaksanakan fungsi tertentu operasi pada data jadual sebelum atau selepas pengubahsuaian berlaku. Satu kes penggunaan biasa ialah melalaikan medan kepada nilai kunci utama (ID) yang dijana secara automatik dalam situasi di mana ia dibiarkan batal semasa dimasukkan.
Pernyataan Masalah:
Untuk mencapai matlamat ini, mari kita pertimbangkan jadual dengan tiga lajur: id (kunci utama), group_id (integer) dan nilai (varchar). Objektifnya adalah untuk mempunyai tingkah laku berikut semasa pemasukan rekod:
Pelaksanaan Pencetus:
Walaupun adalah wajar untuk melaksanakan operasi ini dalam satu pernyataan atau pencetus, pengehadan MySQL menghalangnya. Satu penyelesaian adalah dengan menggunakan pendekatan dua langkah:
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
Keterbatasan:
Adalah penting untuk ambil perhatian bahawa pencetus SEBELUM INSERT tidak boleh mengakses nilai id yang baru dijana kerana ia masih belum ditetapkan. Walau bagaimanapun, menggunakan pencetus AFTER INSERT untuk mengakses nilai yang dijana bukanlah pilihan kerana nilai lajur tidak boleh diubah suai dalam fasa tersebut.
Oleh itu, pendekatan dua langkah yang dibentangkan di atas menyediakan penyelesaian kepada tingkah laku yang diingini dalam MySQL .
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Medan kepada ID Dijana Auto dalam MySQL Menggunakan Pencetus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!