Ràng buộc kiểm tra trong SQL Server

Ràng buộc kiểm tra Check Constraint trong SQL Server là gì?

Ràng buộc kiểm tra trong SQL Server (Transact-SQL) cho phép xác định điều kiện cho mỗi hàng trong bảng.

Lưu ý

  • Ràng buộc kiểm tra không thể định nghĩa trong SQL View.
  • Ràng buộc kiểm tra trong bảng phải tham chiếu tới cột trong bảng đó, không thể tham chiếu tới cột ở bảng khác.
  • Ràng buộc kiểm tra không thể dùng truy vấn con Subquery.
  • Ràng buộc kiểm tra có thể định nghĩa bằng lệnh CREATE TABLE hoặc ALTER TABLE.

Tạo ràng buộc kiểm tra bằng lệnh CREATE TABLE

Cú pháp

CREATE TABLE ten_bang (  cot1 kieudulieu [ NULL | NOT NULL ],  cot2 kieudulieu [ NULL | NOT NULL ],    CONSTRAINT ten_rangbuoc   CHECK [ NOT FOR REPLICATION ] (dieu_kien ten_cot)  );

Các kiểu dữ liệu trong SQL Server

ten_bang

Tên của bảng muốn tạo ràng buộc kiểm tra.

ten_rangbuoc

Tên muốn đặt cho ràng buộc kiểm tra.

ten_cot

Cột của bảng mà ràng buộc kiểm tra sẽ áp dụng.

dieu_kien

Điều kiện ràng buộc phải đáp ứng.

Ví dụ

CREATE TABLE nhanvien (id_nhanvien INT NOT NULL,   ho VARCHAR(50) NOT NULL,   ten VARCHAR(50),   luong MONEY,  CONSTRAINT id_nhanvien_kiemtra    CHECK (id_nhanvien BETWEEN 1 AND 10000) );

Ở ví dụ này, lệnh CREATE TABLE tạo ràng buộc kiểm tra có tên là id_nhanvien_kiemtra trong bảng nhanvien. Ràng buộc này sẽ đảm bảo rằng trường thông tin id_nhanvien chứa giứa trị trong khoảng từ 1 tới 10000.

Đây là một ví dụ khác.

CREATE TABLE nhanvien (id_nhanvien INT NOT NULL,   ho VARCHAR(50) NOT NULL,   ten VARCHAR(50),   luong MONEY,  CONSTRAINT luong_kiemtra    CHECK (luong > 0) );

Ví dụ này tạo ràng buộc kiểm tra luong_kiemtra trong bảng nhanvien, đảm bảo lương sẽ lớn hơn 0.

Tạo ràng buộc kiểm tra bằng lệnh ALTER TABLE

Cú pháp

ALTER TABLE ten_bang  ADD CONSTAINT ten_rangbuoc  CHECK (dieu_kien ten_cot);

ten_bang

Tên của bảng muốn thêm ràng buộc kiểm tra.

ten_rangbuoc

Tên đặt cho ràng buộc kiểm tra.

ten_cot

Cột trong bảng mà ràng buộc kiểm tra áp dụng.

dieu_kien

Điều kiện mà ràng buộc kiểm tra phải đáp ứng.

Ví dụ

Đây là ví dụ dùng lệnh ALTER TABLE tạo ràng buộc kiểm tra trong SQL Server.

ALTER TABLE nhanvien ADD CONSTRAINT ho_kiemtra  CHECK (ho IN (‘Smith’, Anderson’, Jonas’));

Ràng buộc kiểm tra ho_kiemtra được tạo trên bảng nhanvien đã có sẵn, đảm bảo rằng họ của nhân viên sẽ chỉ chứa các giá trị Smith, Anderson hoặc Jonas.

Xóa ràng buộc kiểm tra

Cú pháp

ALTER TABLE ten_bang DROP CONSTRAINT ten_rangbuoc

ten_bang

Tên của bảng muốn xóa ràng buộc kiểm tra.

ten_rangbuoc

Tên ràng buộc kiểm tra muốn xóa.

Ví dụ

ALTER TABLE nhanvien  DROP CONSTRAINT ho_kiemtra;

Lệnh này sẽ xóa ràng buộc ho_kiemtra trên bảng nhanvien.

Kích hoạt ràng buộc kiểm tra

Cú pháp

ALTER TABLE ten_bang  WITH CHECK CHECK CONSTRAINT ten_rangbuoc;

ten_bang

Tên của bảng muốn kích hoạt lại ràng buộc kiểm tra.

ten_rangbuoc

Tên của ràng buộc kiểm tra cần kích hoạt.

Ví dụ

ALTER TABLE nhanvien  WITH CHECK CHECK CONSTRAINT luong_kiemtra;

Ví dụ này kích hoạt lại ràng buộc kiểm tra luong_kiemtra trong bảng nhanvien.

Vô hiệu hóa ràng buộc kiểm tra

Cú pháp

ALTER TABLE ten_bang NOCHECK CONSTRAINT ten_rangbuoc;

ten_bang

Tên của bảng muốn vô hiệu hóa ràng buộc kiểm tra.

ten_rangbuoc

Tên của ràng buộc kiểm tra muốn vô hiệu hóa.

Ví dụ

ALTER TABLE nhanvien NOCHECK CONSTRAINT luong_kiemtra;

Ví dụ này vô hiệu hóa ràng buộc kiểm tra luong_kiemtra trong bảng nhanvien.