Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใช้ View จำลอง CHECK CONSTRAINT ใน MySQL

การจำลอง CHECK CONSTRAINT ด้วย View + WITH CHECK OPTION

MySQL ไม่รองรับ CHECK Constraint โดยตรง แต่ View พร้อม WITH CHECK OPTION สามารถจำลองได้

ตัวอย่าง: ตาราง car1 รูปแบบทะเบียน XX-999-XX

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)

mysql> INSERT INTO car1 VALUES('AB-2X5-YZ');
Query OK, 1 row affected (0.04 sec)  -- ไม่ถูกต้องแต่เข้าได้

สร้าง View car_invalid_check พร้อม CHECK OPTION

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'

View บังคับให้ข้อมูลผ่าน Regular Expression เท่านั้น INSERT/UPDATE ที่ไม่ผ่านจะ Error