检查约束指明了在数据可插入列 before 必须满足的条件。
插入或更新时,如果行对表上定义的任何检查约束返回 false ,则数据库服务器返回一条错误。然而,如果行对检查约束返回 NULL ,则不返回错误。在某些情况下,您可能希望同时使用检查约束和 NOT NULL 约束。
检查约束是使用搜索条件定义的。搜索条件不能包含用户定义的例程、子查询、聚集、主变量或行标识。另外,条件不能包含变量内置函数 CURRENT 、SYSDATE 、USER 、CURRENT_USER 、SITENAME 、DBSERVERNAME 或 TODAY 。
检查约束不能包含不同表中的列。当正在使用 ADD 或 MODIFY 子句时,检查约束不能依赖于相同表的其它列中的值。
ALTER TABLE items ADD (unit_price MONEY (6,2) CHECK (unit_price > 0));
ALTER TABLE items ADD CONSTRAINT CHECK (unit_price < total_price);