为什么这个SQL会出错?

时间:2014-09-05 09:12:43

标签: sql oracle

我有以下SQL代码:

  CREATE TABLE "MY_SCHEMA"."FLIGHT" 
   (    "ID" NUMBER NOT NULL, 
    "SERVICE_SEQ_FK" NUMBER FOREIGN KEY REFERENCES SERVICE(SERVICE_SEQ)
   );

它出现以下错误:

  

SQL错误:ORA-00907:缺少右括号

什么是右括号?

2 个答案:

答案 0 :(得分:2)

定义内嵌外键时,不得使用foreign key关键字:

CREATE TABLE MY_SCHEMA.FLIGHT 
(    
   ID             NUMBER NOT NULL, 
   SERVICE_SEQ_FK NUMBER REFERENCES SERVICE (SERVICE_SEQ)
);

有关详细信息,请参阅手册:http://docs.oracle.com/cd/E11882_01/server.112/e41084/clauses002.htm#CJAHIEIJ

答案 1 :(得分:0)

  1. 首先摆脱那些双引号,他们稍后会麻烦你。
  2. 使用“ID”列的显式名称而不仅仅是“ID”。

    CREATE TABLE MY_SCHEMA.FLIGHT
    (
       ID_COL NUMBER NOT NULL,
       CONSTRAINT SERVICE_SEQ_FK FOREIGN KEY (SERVICE_SEQ) SERVICE(SERVICE_SEQ)
    );
    
  3. 更新:我认为最好为IN-line和OUT-of-line外键定义提供示例。

    内联外键(列定义的一部分):

    CREATE TABLE t2 (
            c1 NUMBER PRIMARY KEY,
            c2 NUMBER REFERENCES t1(c1) );
    

    外键外键(在列定义之后):

    CREATE TABLE t3 (
            c1 NUMBER,
            c2 NUMBER,
            CONSTRAINT t1_fk FOREIGN KEY (c1) REFERENCES t1);