SQL检查约束出生日期

SQL检查约束出生日期,sql,constraints,Sql,Constraints,我想创建一个客户年龄不能小于18岁的约束。在Oracle中,使用支票约束无法做到这一点。如本规范所定义: 检查约束的条件不能包含以下构造: 子查询和标量子查询表达式 对当前_日期不确定的函数的调用, 当前时间戳、DBTIMEZONE、LOCALTIMESTAMP、SESSIONTIMEZONE、, SYSDATE、SYSTIMESTAMP、UID、USER和USERENV 你需要一些关于当前时间的概念来计算年龄 这是因为Oracle比其他一些数据库更重视检查约束。它们永远验证数据,而不仅仅是在数

我想创建一个客户年龄不能小于18岁的约束。

在Oracle中,使用支票约束无法做到这一点。如本规范所定义:

检查约束的条件不能包含以下构造:

子查询和标量子查询表达式

对当前_日期不确定的函数的调用, 当前时间戳、DBTIMEZONE、LOCALTIMESTAMP、SESSIONTIMEZONE、, SYSDATE、SYSTIMESTAMP、UID、USER和USERENV

你需要一些关于当前时间的概念来计算年龄

这是因为Oracle比其他一些数据库更重视检查约束。它们永远验证数据,而不仅仅是在数据加载到表中时


您可以使用触发器执行任何操作。

您可以分享如何使用触发器执行操作吗?您可以参考此链接创建日期约束
CREATE TABLE  "CUSTOMER" 

("CUS_ID" VARCHAR2(9), 
"NAME" VARCHAR2(30), 
"EMAIL" VARCHAR2(30), 
"BIRTH_DATE" DATE, 
"Mobile_number" NUMBER (10),
"Number_adopted" (number) (1),
 CONSTRAINT "CUSTOMER_PK" PRIMARY KEY ("CUS_ID")
 constraint "Email_uni" unique (EMAIL)
 constraint "Mobile_uni" unique (Mobile_number)
 constraint adopted_range_ck check ( Number_adopted >=1 and Number_adopted<=4) USING INDEX  ENABLE
);