Rumah > pangkalan data > tutorial mysql > Mengapa Kekangan CHECK MySQL Saya Tidak Berfungsi?

Mengapa Kekangan CHECK MySQL Saya Tidak Berfungsi?

Mary-Kate Olsen
Lepaskan: 2025-01-10 11:20:45
asal
559 orang telah melayarinya

Why Aren't My MySQL CHECK Constraints Working?

Memahami Gelagat Kekangan CHECK dalam MySQL

Pengendalian MySQL terhadap kekangan CHECK kadangkala tidak dijangka. Kekangan CHECK mungkin kelihatan tidak aktif, walaupun ditakrifkan dengan betul. Perkara utama ialah memahami keserasian versi MySQL.

MySQL 8.0.16 ialah versi pertama yang menyokong sepenuhnya kekangan CHECK. Jika versi MySQL anda lebih lama daripada 8.0.16, klausa CHECK akan dihuraikan tetapi diabaikan oleh semua enjin storan. Data yang melanggar kekangan akan dimasukkan tanpa ralat.

Rujuk Manual Rujukan MySQL rasmi (https://www.php.cn/link/e6c19a87ef9e816e02ce247d4f41d38a) untuk mengesahkan keupayaan versi MySQL anda.

Alternatif untuk SEMAK Kekangan (untuk versi MySQL yang lebih lama):

Jika versi MySQL anda tidak mempunyai sokongan kekangan CHECK, pertimbangkan untuk menggunakan pencetus. Pencetus melaksanakan kod tersuai sebagai tindak balas kepada peristiwa pangkalan data seperti sisipan baris. Pencetus boleh mengesahkan data sebelum memasukkan, memastikan integriti data.

Sebagai contoh, pencetus untuk menguatkuasakan nilai bukan negatif untuk medan SD dalam jadual Customer boleh jadi:

<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>
Salin selepas log masuk

Pencetus ini memintas INSERT pernyataan pada jadual Customer. Jika SD negatif, pencetus menetapkannya kepada sifar. Ini menyediakan kefungsian yang serupa dengan kekangan CHECK.

Atas ialah kandungan terperinci Mengapa Kekangan CHECK MySQL Saya Tidak Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan