Seperti yang kita semua tahu, MySQL menyokong kunci asing untuk integriti rujukan, tetapi tidak menyokong kekangan CHECK. Tetapi kita boleh mensimulasikannya dengan menggunakan pencetus. Masalah ini boleh diselesaikan dengan bantuan contoh yang diberikan di bawah -
Andaikan kita mempunyai jadual bernama "kereta1" Nombor pendaftaran sintaks adalah seperti dua huruf, satu sempang, tiga digit, satu sempang, Dua huruf seperti ini -
mysql> Create table car1 (number char(9)); Query OK, 0 rows affected (0.32 sec) mysql> Insert into car1 values('AB-235-YZ'); Query OK, 1 row affected (0.10 sec)
Nilai di atas adalah sah, tetapi bagaimana dengan nilai yang ingin kita masukkan dalam pertanyaan seterusnya?
mysql> insert into car1 values('AB-2X5-YZ'); Query OK, 1 row affected (0.04 sec)
Nilai di atas bukan nilai yang sah kerana ia mengandungi aksara antara nombor, yang melanggar sintaks tetap yang kami gunakan.
Buat VIEW untuk mensimulasikan KEKANGAN SEMAK untuk memasukkan dan mengemas kini nilai -
mysql> Create view car_invalid_check as -> Select * from car1 WHERE number rlike '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$' -> with check option; Query OK, 0 rows affected (0.12 sec) mysql> Insert into car_invalid_check values('AB-2X5-YZ'); ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check' mysql> Insert into car_invalid_check values('AB-235-YZ'); Query OK, 1 row affected (0.09 sec) mysql> Update car_invalid_check SET NUMBER = 'AB-2X5-ZT'; ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'
Atas ialah kandungan terperinci Bagaimana untuk menggunakan VIEWS untuk mensimulasikan CHECK CONSTRAINT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!