Rumah >pangkalan data >tutorial mysql >Bagaimanakah Kekangan MySQL CHECK Berfungsi, dan Bagaimana Saya Boleh Memastikan Pengesahan Data dalam Versi Lama dan Baru?

Bagaimanakah Kekangan MySQL CHECK Berfungsi, dan Bagaimana Saya Boleh Memastikan Pengesahan Data dalam Versi Lama dan Baru?

Barbara Streisand
Barbara Streisandasal
2025-01-10 10:32:42291semak imbas

How Do MySQL CHECK Constraints Work, and How Can I Ensure Data Validation in Older and Newer Versions?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn