Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Mô phỏng CHECK CONSTRAINT bằng VIEW trong MySQL

Có thể dùng VIEW WITH CHECK OPTION để ép buộc dữ liệu thỏa mãn điều kiện khi INSERT/UPDATE qua view.

Ví dụ: Kiểm tra biển số xe

mysql> CREATE TABLE car1 (number CHAR(9));
mysql> INSERT INTO car1 VALUES('AB-235-YZ');  -- hợp lệ
mysql> INSERT INTO car1 VALUES('AB-2X5-YZ');  -- không hợp lệ nhưng được chấp nhận

Tạo VIEW với điều kiện và WITH 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)

Kiểm tra

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'

Chỉ cho phép thao tác dữ liệu thỏa mãn điều kiện WHERE của view. Truy cập trực tiếp bảng car1 vẫn bỏ qua kiểm soát này.