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
);
我想创建一个客户不能小于18岁的约束。
答案 0 :(得分:1)
您无法在Oracle中使用check
约束执行此操作。正如documentation:
检查约束条件不能包含以下结构:
子查询和标量子查询表达式
调用不确定的函数(CURRENT_DATE, CURRENT_TIMESTAMP,DBTIMEZONE,LOCALTIMESTAMP,SESSIONTIMEZONE, SYSDATE,SYSTIMESTAMP,UID,USER和USERENV)
您需要一些当前时间的概念来计算年龄。
这是因为Oracle比其他数据库更严肃地对待检查约束。它们“永远”验证数据,而不仅仅是将数据加载到表中。
你可以用触发器做你想做的事。