Rumah >pangkalan data >tutorial mysql >Mengapa Sokongan MySQL Tidak SEMAK Kekangan, dan Apakah Alternatifnya?

Mengapa Sokongan MySQL Tidak SEMAK Kekangan, dan Apakah Alternatifnya?

Patricia Arquette
Patricia Arquetteasal
2025-01-04 20:24:41376semak imbas

Why Doesn't MySQL Support CHECK Constraints, and What Are the Alternatives?

Menambah Kekangan CHECK Tersuai dalam MySQL

Anda mungkin menghadapi masalah apabila cuba menambah kekangan SEMAK tersuai pada jadual MySQL. Kekangan ini, yang mengehadkan nilai yang boleh dimasukkan ke dalam lajur berdasarkan syarat yang ditentukan, tidak disokong secara asli dalam MySQL.

Pertimbangkan kod yang disediakan, yang cuba menguatkuasakan kekangan CHECK pada lajur status untuk hanya benarkan nilai 'a', 'd' dan 'u':

CREATE TABLE `Participants` (
  ...
  CONSTRAINT `participants_ibfk_2` CHECK (status IN ('a','d','u'))
  ...
);

Walau bagaimanapun, selepas melaksanakan kod ini dalam MySQL, anda akan perasan bahawa kekangan CHECK diabaikan. Ini kerana, seperti yang dinyatakan dalam manual MySQL, klausa CHECK yang ditakrifkan dalam definisi jadual tidak disokong oleh enjin storan MySQL.

Oleh itu, adalah penting untuk memahami bahawa walaupun MySQL membenarkan anda mentakrifkan kekangan CHECK, kekangan ini tidak menguatkuasakan sebarang sekatan ke atas data yang dimasukkan ke dalam jadual.

Penyelesaian

Untuk menguatkuasakan integriti data dan mengekang nilai lajur seperti yang dimaksudkan, anda boleh mempertimbangkan penyelesaian berikut:

  • Menggunakan Pencetus: Pencetus MySQL boleh digunakan untuk melaksanakan kekangan CHECK tersuai. Walau bagaimanapun, pencetus memerlukan pertimbangan dan pengurusan yang teliti, dan boleh menjejaskan prestasi pangkalan data.
  • Berpindah ke PostgreSQL: PostgreSQL, satu lagi RDBMS sumber terbuka, menyokong sepenuhnya kekangan CHECK, memberikan penyelesaian yang lebih mantap untuk menguatkuasakan integriti data. Jika tahap kekangan ini penting untuk aplikasi anda, pertimbangkan untuk berhijrah ke PostgreSQL mungkin menjadi pilihan.

Atas ialah kandungan terperinci Mengapa Sokongan MySQL Tidak SEMAK Kekangan, dan Apakah Alternatifnya?. 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