【问题标题】:SQL Create Table ErrorSQL 创建表错误
【发布时间】:2010-10-05 23:12:45
【问题描述】:

我刚开始学习 SQL,在第一个障碍中绊倒了,我无法创建表。下面是代码示例。我在运行语句时收到的错误,引用第 7 行,说明“关系运算符”存在问题。 第 7 行 的目的是检查此人的年龄是否大于 18。

我正在使用 Oracle(不确定这是否会有所作为)。我希望有人能指出我正确的方向。

1.  CREATE TABLE employee
2.  (
3.  empID         VARCHAR2(20) NOT NULL primary key,
4.  surname       VARCHAR2(15) NOT NULL CHECK(surname=UPPER(surname)),
5.  deptCode      CHAR(5) NOT NULL CHECK(deptCode=UPPER(deptCode)),
6.  empYear       NUMBER(1,0) NOT NULL CHECK(empYear >= 1 AND empYear <= 4),
7.  birthDate     DATE NOT NULL CHECK((SYSDATE - birthDate) /365 ) >= 18
8.  );

谢谢。

【问题讨论】:

    标签: sql oracle create-table


    【解决方案1】:

    您不能定义引用 SYSDATE 等函数的 CHECK 约束。

    Oracle 文档中有关于restrictions on CHECK constraints的讨论

    【讨论】:

    • 感谢您的帮助,我会调查的。谢谢。
    【解决方案2】:

    检查你的括号。

    DATE NOT NULL CHECK(((SYSDATE - birthDate) /365 ) >= 18)
    

    编辑:正如贾斯汀指出的,你不能在这里使用 SYSDATE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多