sql - Oracle SQL-认为缺少正确的括号

标签 sql oracle syntax-error parentheses

CREATE TABLE WORKORDERS
    (wo# NUMBER(10) CONSTRAINT WORKORDERS_wo#_pk PRIMARY KEY,
        proj# NUMBER(10) NOT NULL,
        wo_Desc VARCHAR2(100) NOT NULL,                 
        wo_Assigned VARCHAR2(50),
        wo_Hours NUMBER(3) NOT NULL,
        wo_Start DATE(YYYY-MM-DD),
        wo_Due DATE(YYYY-MM-DD),
        wo_Complete CHAR(1)
        CONSTRAINT WORKORDER_wo_Complete_ck CHECK(wo_Complete IN('Y','N')),
        CONSTRAINT WORKORDER_proj#_fk FOREIGN KEY (proj#) REFERENCES PROJECT (proj#),
        CONSTRAINT WORKORDERS_wo_Desc_unq UNIQUE,
        CONSTRAINT WORKORDERS_wo_Hours_ck CHECK(wo_Hours > 0))

甲骨文为我强调的问题是
wo_Start DATE(YYYY-MM-DD),
            E(Y

它建议添加一个REFERENCE或CONSTRAINT,但我认为两者都不能解决。看起来不错,我不确定为什么它只会给我一个跨越3个字符的错误。

最佳答案

如果外键引用有效,我希望以下方法能起作用:

CREATE TABLE WORKORDERS (
    wo# NUMBER(10) CONSTRAINT WORKORDERS_wo#_pk PRIMARY KEY,
    proj# NUMBER(10) NOT NULL,
    wo_Desc VARCHAR2(100) NOT NULL,                 
    wo_Assigned VARCHAR2(50),
    wo_Hours NUMBER(3) NOT NULL,
    wo_Start DATE,
    wo_Due DATE,
    wo_Complete CHAR(1),
    CONSTRAINT WORKORDER_wo_Complete_ck CHECK (wo_Complete IN ('Y','N')),
    CONSTRAINT WORKORDER_proj#_fk FOREIGN KEY (proj#) REFERENCES PROJECT (proj#),
    CONSTRAINT WORKORDERS_wo_Desc_unq UNIQUE (wo_Desc),
    CONSTRAINT WORKORDERS_wo_Hours_ck CHECK (wo_Hours > 0)
);

问题:
  • 非法的日期格式。
  • 约束前缺少逗号。
  • 不完整的唯一约束。
  • 关于sql - Oracle SQL-认为缺少正确的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44579634/

    相关文章:

    mysql - MySQL 中 SUM() 和 COUNT() 的区别

    sql - 如何编写一个SQL语句以将 "LIKE"用于9个不同的值?

    php - 如何在 phpmyadmin 中导出不包括 id 列(AUTO_INCREMENT 列)

    sql - 在Oracle ANSI连接中混合 "USING"和 "ON"

    Oracle - 隐式与显式语句缓存

    python - Cython在所有Python脚本上引发相同的运行时错误

    c++ - 错误 C2440,战舰 C++

    sql-server - T-SQL IF问题

    mysql - Group byWhere(field.id相同)

    c# - 引用 NHibernate 时出错(从 'IdentitySelectString' 上的 'NHibernate.Dialect.Oracle10gDialect' 获取值时出错。)