2014-11-24 99 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忽略空行