Rumah >pangkalan data >tutorial mysql >Bolehkah MySQL Triggers Mimic CHECK Constraints dengan Mengembalikan Ralat?
Menggunakan Pencetus MySQL untuk Meniru Kekangan CHECK
MySQL, tidak seperti RDBMS lain, membolehkan pemahaman tentang kekangan CHECK tetapi gagal melaksanakannya. Had ini memerlukan penerokaan pendekatan alternatif, termasuk penggunaan pencetus. Walau bagaimanapun, kebanyakan pencetus ini hanya menetapkan nilai lalai dan bukannya mengembalikan ralat.
Bolehkah Pencetus Dibina untuk Mengembalikan Ralat Apabila Syarat Tidak Dipenuhi?
Memang, ia adalah mungkin untuk membina pencetus yang mengembalikan ralat jika syarat tertentu tidak dipenuhi. Dengan menggunakan pernyataan SIGNAL dan SET MESSAGE_TEXT, pencetus boleh mencontohi kekangan CHECK dengan berkesan.
Pelaksanaan Pencetus
Pertimbangkan pencetus berikut, yang menyerupai kekangan CHECK yang memastikan medan "bulan" tidak boleh melebihi 12:
delimiter $$ create trigger chk_stats before update on stats for each row begin if new.month>12 then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot add or update row: only'; end if; end; $$
Pencetus ini beroperasi sebelum operasi kemas kini dan menyemak nilai baharu medan "bulan". Jika nilai melebihi 12, ia menimbulkan ralat dengan SQLSTATE '45000' dan mesej "Tidak boleh menambah atau mengemas kini baris: sahaja."
Pencetus untuk Sisipan
Pencetus yang serupa boleh digunakan untuk operasi sisipan:
delimiter $$ create trigger chk_stats before insert on stats for each row begin if new.month>12 then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot add or update row: only'; end if; end; $$
Dengan menggunakan mencetuskan dengan cara ini, anda boleh meniru fungsi kekangan CHECK dalam MySQL dengan berkesan, memastikan integriti data dan menghalang nilai tidak sah daripada dimasukkan atau dikemas kini.
Atas ialah kandungan terperinci Bolehkah MySQL Triggers Mimic CHECK Constraints dengan Mengembalikan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!