22/08/2018, 11:18

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

Ràng buộc kiểm tra trong SQL Server là gì, sử dụng vào mục đích gì và sử dụng như thế nào? Bài viết này sẽ cho bạn câu trả lời. 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 ...

Ràng buộc kiểm tra trong SQL Server là gì, sử dụng vào mục đích gì và sử dụng như thế nào? Bài viết này sẽ cho bạn câu trả lời.

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.

Bài trước: Ràng buộc duy nhất trong SQL Server 

Bài sau: Chỉ mục trong SQL Server

0