1. Ràng buộc CHECK

Ràng buộc CHECK trong SQL nhằm kiểm tra một điều kiện cụ thể nào đó được đưa ra trước khi dữ liệu được thêm vào cột. Nếu bạn xác định một ràng buộc CHECK trên một cột, nó sẽ chỉ cho phép một số giá trị nhất định cho cột này. Nếu bạn xác định một ràng buộc CHECK trên một bảng, nó có thể giới hạn các giá trị trong các cột nhất định dựa trên các giá trị trong các cột khác trong hàng.

Cú pháp thêm ràng buộc CHECK vào câu lệnh tạo bảng như sau:

CREATE TABLE table_name (
    column1 datatype CHECK (condition),
    column2 datatype,
    column3 datatype,
   ....
);

Để cho phép đặt tên cho một ràng buộc CHECK và để xác định một ràng buộc CHECK trên nhiều cột, hãy sử dụng cú pháp SQL sau:

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
    CONSTRAINT name CHECK(condition1, condition2,....)
   ....
);

Trong đó:

  • CREATE TABLE là câu lệnh hay từ khóa cần có ta
  • table_name là tên của bảng cần tạo
  • column1, column2, column3… là tên các cột thuộc trong bảng
  • datatype là kiểu dữ liệu của từng cột
  • CHECK là từ khóa của ràng buộc
  • name là tên của ràng buộc CHECK do ta tự đặt
  • condition1, condition2… là điều kiện cần kiểm tra cho các cột

Để bổ xung ràng buộc CHECK cho bảng đã được tạo ta sẽ sử dụng câu lệnh sau:

ALTER TABLE table_name
ADD CONSTRAINT name CHECK (condition1, condition2,....);

Để loại bỏ một ràng buộc CHECK , hãy sử dụng SQL sau:

ALTER TABLE table_name
DROP CONSTRAINT name;

Để loại bỏ một ràng buộc CHECK thì ta cần biết tên hay name của ràng buộc CHECK đó!

2. Ví dụ CHECK

Tôi sẽ tạo ra một bảng có tên là ConNguoi bao gồm các cột thông tin là ID, Ho, Ten, DiaChi, Tuoi trong bảng này tôi sẽ đặt ràng buộc CHECK cho cột DiaChi = ‘Ha Noi’ và ràng buộc CHECK cho cột Tuoi >= 20. Trong ví dụ này tôi sẽ đặt tên cho ràng buộc CHECK này là CHK_ConNguoi

CREATE TABLE ConNguoi (
    ID int NOT NULL PRIMARY KEY,
    Ho varchar(25) NOT NULL,
    Ten varchar(25) NOT NULL,
    DiaChi nvarchar(255),
    Tuoi int,
    CONSTRAINT CHK_ConNguoi CHECK (DiaChi = 'Ha Noi' AND Tuoi >= 20)
);

Sau khi bảng trên đã được tạo ra, giả sử tôi cần bổ sung thêm ràng buộc CHECK cho cột Ho = ‘Nguyen’  và đặt tên cho ràng buộc CHECK này là CHK_Ho khi đó tôi sẽ sử dụng cú pháp sau:

ALTER TABLE ConNguoi
ADD CONSTRAINT CHK_Ho CHECK (Ho = 'Nguyen');

Nếu như cần xóa bỏ ràng buộc CHECK đã được tạo ở trên khỏi cột thì ta sẽ sử dụng như sau:

ALTER TABLE ConNguoi
DROP CONSTRAINT CHK_Ho;

Chú ý: Khi một ràng buộc CHECK được thêm vào cột thì các dữ liệu khi được thêm và cập nhật phải thỏa mãn đúng điều kiện mà cột yêu cầu thì mới được thực thi.