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
ALTERTABLE ten_bang
ADD CONSTAINT ten_rangbuoc
CHECK (d
ieu_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 TABLEnhanvien
ADD CONSTRAINT ho_kiemtra
CHECK (ho IN (‘S
mith’, ‘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 CHEC
K 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 CHEC
K 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.
22 Th12 2020
13 Th1 2021
23 Th12 2020
5 Th1 2021
25 Th12 2020
16 Th12 2020