Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào VIEWS có thể được sử dụng để mô phỏng CHECK CONSTRAINT?


Như chúng ta biết rằng MySQL hỗ trợ khóa ngoại cho tính toàn vẹn tham chiếu nhưng nó không hỗ trợ ràng buộc CHECK. Nhưng chúng ta có thể mô phỏng chúng bằng cách sử dụng trình kích hoạt. Nó có thể được minh họa với sự trợ giúp của một ví dụ dưới đây -

Ví dụ

Giả sử chúng ta có một bảng tên là ‘car1’ có thể có số đăng ký cú pháp sửa lỗi như hai chữ cái, một dấu gạch ngang, ba chữ số, một dấu gạch ngang, hai chữ cái như sau -

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)

Giá trị trên là giá trị hợp lệ nhưng còn giá trị mà chúng ta sẽ chèn trong truy vấn tiếp theo thì sao.

mysql> insert into car1 values('AB-2X5-YZ');
Query OK, 1 row affected (0.04 sec)

Giá trị trên không phải là giá trị hợp lệ vì nó chứa một ký tự nằm giữa các chữ số trái với cú pháp cố định mà chúng tôi đang sử dụng.

Tạo CHẾ ĐỘ XEM để mô phỏng CHECK CONSTRAINT để chèn và cập nhật các giá trị -

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'