Tags:

Hướng dấn sử dụng CHECK constraint trong SQL

CHECK constraint được sử dụng để chỉ định các điều kiện dùng để kiểm tra các giá trị trong bảng ghi được ghi xuống database. Nếu kết quả trả về của điều kiện false, nghĩa là dữ liệu đang vi phạm nguyên tắc và nó sẽ không được ghi xuống database.

Tạo Check Constraint 

Ví dụ, chúng ta sẽ tạo một bảng Student gồm 5 cột StudentID, Name, Age và Gender. Ở đây chúng ta sẽ thêm một điều kiện cho cột Age lớn hơn hoặc bằng 17.

CREATE TABLE student(
StudentID INT NOT NULL,
Name VARCHAR(30) NOT NULL,
Age INT NOT NULL,
GENDER VARCHAR(9),
PRIMARY KEY(ID),
check(Age >= 17)
);
CREATE TABLE student( StudentID INT NOT NULL, Name VARCHAR(30) NOT NULL, Age INT NOT NULL, GENDER VARCHAR(9), PRIMARY KEY(ID), check(Age >= 17) );
CREATE TABLE student(
        StudentID INT NOT NULL,
        Name VARCHAR(30) NOT NULL,
        Age INT NOT NULL,
        GENDER VARCHAR(9),
        PRIMARY KEY(ID),
        check(Age >= 17)
        );

Bảng Student có dữ liệu sau

STUDENTID NAME AGE GENDER
1001 Ron 18 Male
1002 Sam 17 Male
1003 Georgia 17 Female
1004 Erik 19 Unknown
1005 Christine 17 Female

Khi chúng ta tiến hành thêm dữ liệu có dạng sau:

INSERT INTO student(STUDENTID, NAME, AGE, GENDER)
VALUES (1006, 'Emma', 16, 'Female');
INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');
INSERT INTO student(STUDENTID, NAME, AGE, GENDER) 
VALUES (1006, 'Emma', 16, 'Female');

Chúng ta có thể thấy rằng Student vừa được thêm vào có Age bé hơn 17, nên dữ liệu này sẽ không được thêm xuống database.

Nếu bảng CUSTOMERS đã tồn tại trước đó, chúng ta có thể thêm một CHECK constraint cho cột AGE với mệnh đề ALTER TABLE.

ALTER TABLE CUSTOMERS
MODIFY AGE INT NOT NULL CHECK (AGE >= 18 );
ALTER TABLE CUSTOMERS MODIFY AGE INT NOT NULL CHECK (AGE >= 18 );
ALTER TABLE CUSTOMERS
   MODIFY AGE INT NOT NULL CHECK (AGE >= 18 );

Bạn cũng có thể sử dụng cú pháp sau, cú pháp này cũng hỗ trợ đặt tên cho ràng buộc trong nhiều cột:

ALTER TABLE CUSTOMERS
ADD CONSTRAINT myCheckConstraint CHECK(AGE >= 18)
ALTER TABLE CUSTOMERS ADD CONSTRAINT myCheckConstraint CHECK(AGE >= 18)
ALTER TABLE CUSTOMERS
   ADD CONSTRAINT myCheckConstraint CHECK(AGE >= 18)

Xóa CHECK Constraint

Để xóa một CHECK Constraint sử dụng cú pháp trong SQL. Lưu ý cú pháp này không hoạt động trên MySQL.

ALTER TABLE CUSTOMERS
DROP CONSTRAINT myCheckConstraint;
ALTER TABLE CUSTOMERS DROP CONSTRAINT myCheckConstraint;
ALTER TABLE CUSTOMERS
   DROP CONSTRAINT myCheckConstraint;

Nguồn tham khảo

https://www.tutorialspoint.com/sql/sql-check.htm

https://www.geeksforgeeks.org/sql-check-constraint/

0 0 votes
Article Rating
Subscribe
Notify of
guest


0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x