我有下面的SQL代碼:這個SQL爲什麼會給出錯誤?
CREATE TABLE "MY_SCHEMA"."FLIGHT"
( "ID" NUMBER NOT NULL,
"SERVICE_SEQ_FK" NUMBER FOREIGN KEY REFERENCES SERVICE(SERVICE_SEQ)
);
它提供了以下錯誤:
SQL Error: ORA-00907: missing right parenthesis
什麼右括號?
我有下面的SQL代碼:這個SQL爲什麼會給出錯誤?
CREATE TABLE "MY_SCHEMA"."FLIGHT"
( "ID" NUMBER NOT NULL,
"SERVICE_SEQ_FK" NUMBER FOREIGN KEY REFERENCES SERVICE(SERVICE_SEQ)
);
它提供了以下錯誤:
SQL Error: ORA-00907: missing right parenthesis
什麼右括號?
在定義直列外鍵,則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
使用「ID」列的明確名稱而不是「ID」。
CREATE TABLE MY_SCHEMA.FLIGHT
(
ID_COL NUMBER NOT NULL,
CONSTRAINT SERVICE_SEQ_FK FOREIGN KEY (SERVICE_SEQ) SERVICE(SERVICE_SEQ)
);
更新:我覺得這是更好地提供在線和OUT-OF-線外鍵定義的例子。
內聯外鍵(列定義的一部分):
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);