MySQL CHECK Constraint
Trong MySQL, CHECK constraint là một loại ràng buộc cho phép kiểm tra tính hợp lệ của dữ liệu trong một bảng. Nó đặt ra các điều kiện mà giá trị của một cột phải thoả mãn trước khi được chèn hoặc cập nhật trong bảng. Điều này giúp đảm bảo rằng dữ liệu trong cơ sở dữ liệu luôn nhất quán và chính xác.
Định nghĩa
CHECK constraint sử dụng một biểu thức điều kiện để xác định giá trị hợp lệ cho một hoặc nhiều cột. Nếu giá trị nào không thoả mãn điều kiện, lệnh chèn hoặc cập nhật sẽ bị từ chối, và một thông báo lỗi sẽ được gửi trả tới người dùng.
Cú pháp
Cú pháp để tạo CHECK constraint trong MySQL có thể được áp dụng khi tạo bảng mới hoặc khi thay đổi bảng đã tồn tại:
-- Tạo bảng mới với CHECK constraint CREATE TABLE ten_bang ( ten_cot1 datatype, ten_cot2 datatype, ... CONSTRAINT ten_rang_buoc CHECK (diều_kiện) ); -- Thay đổi bảng đã tồn tại để thêm CHECK constraint ALTER TABLE ten_bang ADD CONSTRAINT ten_rang_buoc CHECK (diều_kiện);
Ví dụ
Dưới đây là một số ví dụ minh hoạ cho việc sử dụng CHECK constraint:
Ví dụ 1: Tạo bảng với CHECK constraint
CREATE TABLE sinh_vien ( id INT PRIMARY KEY, ten VARCHAR(100), tuoi INT, CONSTRAINT check_tuoi CHECK (tuoi >= 18) );
Trong ví dụ trên, bảng sinh_vien được tạo ra với một CHECK constraint đảm bảo rằng giá trị tuổi phải lớn hơn hoặc bằng 18.
Ví dụ 2: Thêm CHECK constraint vào bảng đã tồn tại
ALTER TABLE sinh_vien ADD CONSTRAINT check_email CHECK (email LIKE '%_%@_%._%');
Trong ví dụ này, một CHECK constraint được thêm vào bảng sinh_vien để kiểm tra tính hợp lệ của địa chỉ email.
Ví dụ 3: Lỗi khi không thoả mãn điều kiện của CHECK constraint
INSERT INTO sinh_vien (id, ten, tuoi) VALUES (1, 'Nguyen Van A', 17);
Thao tác chèn này sẽ thất bại bởi vì tuổi của sinh viên không thoả mãn điều kiện (tuổi phải >= 18).
Kết luận
CHECK constraint trong MySQL đóng vai trò quan trọng trong việc duy trì tính hợp lệ và nhất quán của dữ liệu. Việc sử dụng CHECK constraint sẽ giúp đảm bảo rằng mọi dữ liệu được chèn vào bảng đều đáp ứng các tiêu chí đã được xác định trước, từ đó giảm thiểu khả năng xảy ra lỗi và cải thiện chất lượng dữ liệu trong hệ thống.