Rumah >pangkalan data >tutorial mysql >Bagaimanakah Kekangan MySQL CHECK Berfungsi, dan Bagaimana Saya Boleh Memastikan Pengesahan Data dalam Versi Lama dan Baru?
SEMAK kekangan dalam MySQL
Apabila cuba menambah kekangan CHECK pada jadual MySQL, anda mungkin menghadapi tingkah laku yang tidak dijangka apabila memasukkan data yang melanggar kekangan. Artikel ini akan menyelidiki kehalusan kekangan CHECK dalam MySQL dan menyediakan penyelesaian untuk menguatkuasakan pengesahan.
Dalam versi MySQL yang lebih awal (sehingga 8.0.15), kekangan CHECK ditakrifkan tetapi tidak dikuatkuasakan. Seperti yang dinyatakan dalam Manual Rujukan MySQL: "Klausa CHECK dihuraikan oleh semua enjin storan tetapi diabaikan."
Penyelesaian untuk MySQL 8.0.15 dan lebih awal
Untuk memaksa pengesahan data tanpa adanya sokongan kekangan CHECK asli, anda boleh mencipta pencetus:
<code class="language-sql">DELIMITER // CREATE TRIGGER trig_sd_check BEFORE INSERT ON Customer FOR EACH ROW BEGIN IF NEW.SD < 0 THEN SET NEW.SD = 0; END IF; END // DELIMITER ;</code>Pencetus ini akan memintas sebarang pernyataan INSERT dan jika nilai lajur SD kurang daripada 0, ia akan diubah suai kepada 0, memastikan kekangan dikekalkan.
SEMAK kekangan untuk MySQL 8.0.16 dan lebih baru
MySQL 8.0.16 memperkenalkan sokongan penuh untuk kekangan CHECK. Untuk menentukan kekangan CHECK dalam 8.0.16 atau lebih baru, gunakan sintaks berikut:
<code class="language-sql">CREATE TABLE Customer ( SD integer CHECK (SD > 0), Last_Name varchar (30), First_Name varchar(30) );</code>MySQL kini akan menguatkuasakan kekangan dan menghalang pemasukan data yang melanggar kekangan.
Atas ialah kandungan terperinci Bagaimanakah Kekangan MySQL CHECK Berfungsi, dan Bagaimana Saya Boleh Memastikan Pengesahan Data dalam Versi Lama dan Baru?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!