Menggunakan Fungsi untuk Nilai Lalai dalam MySQL
Secara lalai, MySQL tidak menyokong penggunaan fungsi sebagai nilai lalai untuk lajur. Ini jelas dalam contoh yang disediakan:
create table app_users ( app_user_id smallint(6) not null auto_increment primary key, api_key char(36) not null default uuid() );
Pertanyaan ini akan mengakibatkan ralat. Walau bagaimanapun, terdapat penyelesaian untuk mencapai kefungsian yang serupa.
Menggunakan Pencetus
Satu cara untuk mensimulasikan menggunakan fungsi untuk nilai lalai ialah melalui pencetus. Pencetus ialah objek pangkalan data yang dilaksanakan secara automatik apabila peristiwa tertentu berlaku, seperti memasukkan data ke dalam jadual. Berikut ialah pencetus yang boleh digunakan untuk menjana nilai api_key:
CREATE TRIGGER before_insert_app_users BEFORE INSERT ON app_users FOR EACH ROW SET new.api_key = uuid();
Pencetus ini dilaksanakan sebelum sebarang sisipan ke dalam jadual app_users. Ia menetapkan lajur api_key bagi baris yang baru dimasukkan kepada nilai UUID yang dijana oleh fungsi uuid().
Penghadan dan Pertimbangan
Semasa menggunakan pencetus menyediakan penyelesaian, ia mempunyai had:
Pendekatan Lain
Selain pencetus, terdapat pendekatan lain untuk pertimbangkan:
Pendekatan terbaik akan bergantung pada keperluan khusus dan kekangan permohonan anda.
Atas ialah kandungan terperinci Bolehkah Lajur MySQL Menggunakan Fungsi untuk Nilai Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!