2017-06-16 75 views
1
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)) 

問題甲骨文一直強調我是的Oracle SQL - 認爲它缺少一個右括號

wo_Start DATE(YYYY-MM-DD), 
      E(Y 

它建議添加引用或約束,但我不認爲要麼將修復它。它看起來很好,我不確定它爲什麼只會給我一個跨越3個字符的錯誤。

+1

我不熟悉在Oracle(或其他任何數據庫)中爲'DATE'提供格式。 –

+0

哦,我想它會需要它(或者它是可選的首選項)。現在刪除它聲稱缺少左括號。 SQL錯誤:ORA-00906:缺少左括號 00906. 00000 - 「缺少左括號」 – zbecker

回答

1

我希望下面的工作,如果外鍵參考書:

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) 
); 

問題:

  • 非法日期格式。
  • 約束前缺少逗號。
  • 不完整的唯一約束。
+0

是的,這結束了工作,非常感謝你! – zbecker