2014-04-06 5 views
1

두 개의 테이블을 생성합니다. 첫 번째 테이블은 오류없이 생성되지만 SUBHEAD 테이블을 만들려고 할 때 오류가 발생합니다. 2 행, 오른쪽 괄호가 누락되었습니다. 나는이 라인이 무엇이 잘못되었는지 확신하지 못한다. 다음은 내 SQL 문입니다 :테이블 생성 (오라클)

CREATE TABLE HEAD 
    (Code NUMERIC(4,0) NOT NULL PRIMARY KEY, 
    HeadName VARCHAR(50) NOT NULL UNIQUE, 
    HType VARCHAR(1) NOT NULL, 
    HDate DATE NOT NULL, 
    OpBal DECIMAL(11,2) NOT NULL 
    ); 

CREATE TABLE SUBHEAD 
    (HCode NUMERIC(4,0) NOT NULL FOREIGN KEY REFERENCES HEAD(Code), 
    SubCode NUMERIC(4,0) NOT NULL, 
    SubName VARCHAR(50) NOT NULL, 
    SDate DATE NOT NULL, 
    OpBal DECIMAL (11,2) NOT NULL, 
    CONSTRAINT pk_subheadID PRIMARY KEY (HCode, SubCode) 
    ); 
+0

는 제약 절에 외래 키 선언을 넣습니다. –

+0

내가 가지고있는 곳에서 어떻게 작동하지 않습니까? 네가 두 곳에서 할 수 있다고 생각 했어. – Stc5097

+1

나는 이론이 크지 않지만 일을 완수 할 수 있습니다. –

답변

2

구문 : "(COL)의 col_type 참조 탭 (COL)"가 아니라 "FOREIGN KEY"

데이터 : "인라인"제약 구문입니다 http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#SQLRF52167
노트 번호 유형은 숫자하지 번호는

그래서 내 기억이 날 바보하지 않았다 - (구문 그래프가 표시되지 않습니다하지만) 여러 인라인 제약이있을 수 있습니다

SQL> create table tt1(a number primary key); 

Table created. 

SQL> create table tt2(a number references tt1(a) not null); 

Table created. 
,
2
CREATE TABLE SUBHEAD 
    (HCode NUMERIC(4,0) NOT NULL, FOREIGN KEY (Hcode) REFERENCES HEAD(Code), 
    SubCode NUMERIC(4,0) NOT NULL, 
    SubName VARCHAR(50) NOT NULL, 
    SDate DATE NOT NULL, 
    OpBal DECIMAL (11,2) NOT NULL, 
    CONSTRAINT pk_subheadID PRIMARY KEY (HCode, SubCode) 
    ); 

(새 테이블 컬럼에 음표 쉼표 참조)