2014-11-24 84 views
0

我決定在這裏完全放出SQL文件。Oracle未知命令 - CONSTRAINT

CREATE TABLE Account 
(
    AccountNumber INTEGER NOT NULL PRIMARY KEY, 
    Name varchar(30) NOT NULL 
); 

CREATE SEQUENCE SEQ_ADDR START WITH 1 INCREMENT BY 1; 

CREATE TABLE Address 
(
    AddressNumber INTEGER NOT NULL PRIMARY KEY, 
    AccountNumber INTEGER NOT NULL, 
    IsPrimary INTEGER NOT NULL, 
    StreetName varchar(50) NOT NULL, 
    ZipCode INTEGER NOT NULL 
); 

CREATE TABLE Bill 
(
    AccountNumber INTEGER NOT NULL, 
    EndDate DATE NOT NULL, 
    StartDate DATE NOT NULL, 
    DueDate DATE NOT NULL, 

    CONSTRAINT BillFK FOREIGN KEY (AccountNumber) REFERENCES Account(AccountNumber), 
    CONSTRAINT BillPK PRIMARY KEY (AccountNumber, EndDate) 
); 

我再次得到錯誤與第一約束開始通話(未知的命令開頭「約束...」 - 忽略了線的其餘部分)。我也偶爾會得到一個'未知的命令')「 - 其餘部分被忽略。」有任何想法嗎?

+0

int是不是Oracle中的數據類型有效。嘗試將其更改爲數字或整數 – Shankar 2014-11-24 19:38:48

+0

我創建了一個測試表'create table account(accountnumber int primary key);'並且您的表在我的環境(11.2.0.3)中創建得很好。你確定它不是複製/粘貼錯誤嗎?你在sqlplus中輸入這個嗎? – mmmmmpie 2014-11-24 19:40:05

+0

我正在將上面的文件加載到SQLPlus中,是的。我決定添加整個文件,因爲看起來我的問題不是孤立的。 – Weasler 2014-11-24 19:49:29

回答

5

任何空行將停止SQL*Plus接受輸入塊並將其放入緩衝區。
因此,當您在空行後面開始輸入關鍵字CONSTRAINT時,會將其視爲新命令並引發錯誤。

試試這個,然後再運行你所有的DDLs

set sqlblanklines on 

你需要指導的SQL * Plus忽略空行