2014-11-24 3 views
0

Я решил полностью удалить файл SQL здесь.Oracle Unknown Command - 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) 
); 

Опять же, ошибка я получаю начинается с первого Constraint вызова (неизвестная команда начала «CONSTRAINT ...» -. Остальная часть строки игнорируется). Я также иногда получаю «неизвестную команду») »- остальная часть игнорируется». Есть идеи?

+0

ИНТ не является допустимым типом данных в Oracle. Попробуйте изменить его на Number или Integer. – Shankar

+0

Создал тестовую таблицу 'create table account (accountnumber int primary key);' и ваша таблица в моем окружении (11.2.0.3) просто отлично. Вы уверены, что это не ошибка копирования/вставки? Вы вводите это в sqlplus? – mmmmmpie

+0

Я загружаю файл выше в SQLPlus, да. Я решил добавить весь файл, так как кажется, что моя проблема не изолирована. – Weasler

ответ

5

Любые пустые строки остановят SQL*Plus от принятия блоков входных данных и помещают их в буфер.
Итак, когда вы запустили ключевое слово CONSTRAINT после пустой строки, оно обработало его как новую команду и вызвало ошибку.

Попробуйте это, прежде чем запускать все свои DDLs.

set sqlblanklines on 

Вам необходимо поручить SQL * плюс игнорировать пустые строки

Смежные вопросы