Ràng buộc CHECK trong SQL

Ràng buộc CHECK trong SQL

Ràng buộc CHECK được sử dụng để hạn chế phạm vi giá trị của các cột.

Nếu định nghĩa ràng buộc CHECK cho một cột, thì cột đó chỉ được phép chứa các giá trị cụ thể.

Nếu định nghĩa ràng buộc CHECK cho một bảng, thì ràng buộc này sẽ hạn chế giá trị ở các cột cụ thể.

Ràng buộc CHECK trong SQL trên CREATE TABLE

Dưới đây là SQL tạo ràng buộc CHECK cho cột "Id_P" khi bảng "Persons" được tạo. Ràng buộc CHECK quy định cột "Id_P" phải chỉ chứa các số nguyên lớn hơn 0.

MySQL:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

Nếu cần đặt tên cho約束 CHECK và định nghĩa約束 CHECK cho nhiều cột, hãy sử dụng cú pháp SQL dưới đây:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)

約束 CHECK trong ALTER TABLE SQL

Nếu cần tạo約束 CHECK cho cột "Id_P" khi bảng đã tồn tại, hãy sử dụng SQL dưới đây:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CHECK (Id_P>0)

Nếu cần đặt tên cho約束 CHECK và định nghĩa約束 CHECK cho nhiều cột, hãy sử dụng cú pháp SQL dưới đây:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

Hủy bỏ約束 CHECK

Nếu cần hủy bỏ約束 CHECK, hãy sử dụng SQL dưới đây:

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT chk_Person

MySQL:

ALTER TABLE Persons
DROP CHECK chk_Person