CREATE TABLE RENTAL (
BOOK_BATE DATE NOT NULL DEFAULT SYSDATE CONSTRAINT BOOK_DATE_UK UNIQUE,
MEMBER_ID NUMBER(10) NOT NULL,
COPY_ID NUMBER(10) NOT NULL,
ACT_BET_DATE DATE DEFAULT (SYSDATE-2),
EXP_RET_DATE DATE,
TITLE_ID NUMBER(10),
CONSTRAINT RENTAL_PK PRIMARY KEY (BOOK_DATE,MEMBER_ID,COPY_ID,TITLE_ID),
CONSTRAINT MEMBER_ID_FK1 FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID),
CONSTRAINT COPY_ID_FK2 FOREIGN KEY(COPY_ID) REFERENCES TITLE_COPY(COPY_ID),
CONSTRAINT TITLE_ID_FK2 FOREIGN KEY(TITLE_ID) REFERENCES TITLE_COPY(TITLE_ID),
)
结果:
ORA-00907: missing right parenthesis
感觉从语法上是没错的,但请看创建表的定义:
CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name
{ column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ]
| table_constraint } [, ... ]
).....
看绿色的内容与红色的定义的内容比较:可以看出一个列默认值置于列约束之前
像这样的错很难发现,在与定义比较时,感觉是没错的,因为一般对顺序没太注重。但容易让人烦到要哭。
当然出现这样的错误还有这样的情况:多了或少了一边的括号、单双引号等。