【发布时间】:2015-11-12 02:11:21
【问题描述】:
CREATE TABLE EMPLOYEE (
DISTRICT_ID CHAR(5 BYTE) NOT NULL,
EMP_ID CHAR(5 BYTE) NOT NULL,
EMP_FNAME CHAR(50 BYTE) NULL,
EMP_LNAME CHAR(50 BYTE) NOT NULL,
ZIPCODE CHAR(5 BYTE) NULL,
HIREDATE DATE DEFAULT SYSDATE NULL,
PREVIOUS_EXPERIENCE_YEARS NUMBER(3,1) DEFAULT 0 NULL,
HIGHEST_EARNED_DEGREE CHAR(11 BYTE) DEFAULT 'Bachelors' NULL,
DIRECT_ADMIN_ID CHAR(5 BYTE) DEFAULT (null) NULL,
IS_ADMIN CHAR(1 BYTE) DEFAULT 'N' NOT NULL,
IS_TEACHER CHAR(1 BYTE) DEFAULT 'Y' NOT NULL,
EDU_EMAIL VARCHAR2(20 BYTE) NOT NULL,
CONSTRAINT EMPLOYEE_PK PRIMARY KEY(EMP_ID),
CONSTRAINT EMPLOYEE_FK
FOREIGN KEY(DISTRICT_ID)
REFERENCES DISTRICT(DISTRICT_ID),
CONSTRAINT EMPLOYEE_FK1
FOREIGN KEY(DIRECT_ADMIN_ID)
REFERENCES ADMIN(A_EMP_ID),
CONSTRAINT EMPLOYEE_UK1 UNIQUE(EDU_EMAIL),
CONSTRAINT HIGHEST_EARNED_DEGREEVALUES CHECK
(HIGHEST_EARNED_DEGREE IN ('GRE','High School',
'Associate','Bachelor','Master','Doctorate')),
CONSTRAINT HIREDATE CHECK ('HIREDATE'>='01-Jan-1950'),
CONSTRAINT EDU_EMAIL CHECK ('Anytext'>='2'),
CONSTRAINT EDU_EMAIL CHECK (SELECT = UPPER(EDU)) "Uppercase"
FROM EDU_EMAIL
);
我要做的是添加一个约束来检查有效电子邮件地址的外观,电子邮件只需要正确格式化。此约束需要检查以确保输入到 EMPLOYEE.EDU_EMAIL 中的所有电子邮件地址都采用 [Anytext@[ANytext].edu 格式。无论我们在哪里看到 [Anytext],都必须至少有 2 个字符。 edu 部分必须是 edu,但可以是任何大写模式,例如 EDU 或 eDu 等。如果电子邮件包含两个字符和任何类型的 .edu 大写字母,则应接受该电子邮件。尝试以某种方式使用 UPPER() 函数来进行此约束。还将 EMPLOYEE.HIGHEST_EARNED_DEGREE 限制为我输入的值,我相信这应该是正确的。并将 EMPLOYEE.HIREDATE 限制为 1950 年 1 月 1 日或之后,拒绝不可能的条目。任何帮助表示赞赏。当我尝试在 Oracle 中运行它时,我得到了缺少的表达式。
【问题讨论】:
-
HIREDATE CHECK ('HIREDATE'>='01-Jan-1950'),- 我已经在你之前的问题中告诉过这有什么问题:stackoverflow.com/a/33636737/330315 你真的阅读你得到的答案吗?你一遍又一遍地问同样的问题。