目录

SQL CHECK 约束


SQL检查约束

这个CHECK约束用于限制可以放置在列中的值范围。

如果你定义一个CHECK列的约束将仅允许此列的某些值。

如果你定义一个CHECK在表上的约束它可以根据行中其他列中的值限制某些列中的值。


创建表时的 SQL 检查

以下 SQL 创建一个CHECK创建#{1}#表时#{0}#列的约束。这CHECK约束确保一个人的年龄必须年满18岁或以上:

MySQL:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CHECK (Age>=18)
);

SQL Server / Oracle / MS 访问:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int CHECK (Age>=18)
);

允许命名CHECK约束,并定义一个 CHECK对多列进行约束,使用以下 SQL 语法:

MySQL / SQL Server / Oracle / MS 访问:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255),
    CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);


ALTER TABLE 上的 SQL CHECK

创建一个CHECK当表已创建时,对 "Age" 列进行约束,请使用以下 SQL:

MySQL / SQL Server / Oracle / MS 访问:

ALTER TABLE Persons
ADD CHECK (Age>=18);

允许命名CHECK约束,并定义一个 CHECK对多列进行约束,使用以下 SQL 语法:

MySQL / SQL Server / Oracle / MS 访问:

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

删除检查约束

删除一个CHECK约束,使用以下 SQL:

SQL Server / Oracle / MS 访问:

ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

MySQL:

ALTER TABLE Persons
DROP CHECK CHK_PersonAge;