ORA-00904 :: неверный идентификатор - PullRequest
3 голосов
/ 15 декабря 2010

Я пытаюсь создать таблицу в Oracle и получаю сообщение об ошибке: ORA-00904: : invalid identifier

Вот моя команда. Я действительно не вижу в этом никакой проблемы. Пожалуйста, помогите мне определить ошибку. Спасибо.

CREATE TABLE Sale (
CustomerId INT NOT NULL ,
BarCode INT NOT NULL ,
SalesId INT NOT NULL ,
Date DATE NULL ,
CheckOut TINYINT(1) NULL ,
PRIMARY KEY (CustomerId, BarCode, SalesId) ,
CONSTRAINT fk_Customer_has_Product_Customer
FOREIGN KEY (CustomerId )
REFERENCES Customer (CustomerId )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_Customer_has_Product_Product1
FOREIGN KEY (BarCode )
REFERENCES Product (BarCode )
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Ответы [ 2 ]

9 голосов
/ 15 декабря 2010

Максимальная длина идентификатора Oracle составляет 30 символов. Это превышает 32 символа:

  • fk_Customer_has_Product_Customer
  • fk_Customer_has_Product_Product1

См. Правила именования объектов схемы

8 голосов
/ 15 декабря 2010

Как упоминалось ранее, измените «ДАТА» на что-то более описательное и не зарезервированное.также, кажется, TINYINT не работает при создании таблицы, поэтому измените его на NUMBER (1), а также на правильное предложение Тони уменьшить размер имени (<= 30 chrs) </p>

CREATE TABLE Sale
(
    CustomerId INT NOT NULL                    ,
    BarCode    INT NOT NULL                    ,
    SalesId    INT NOT NULL                    ,
    SaleDate DATE NULL                    , --DATE is reserved, changed to SaleDate
    CheckOut number(1) NULL               , --tinyint(1) did not work so changed to number(1)
    PRIMARY KEY( CustomerId, BarCode, SalesId )     ,
    CONSTRAINT fk_SaleCustCusID FOREIGN KEY( CustomerId ) REFERENCES Customer( CustomerId ) ON
    DELETE NO ACTION ON
    UPDATE NO ACTION,
    CONSTRAINT fk_SaleCustBarCode FOREIGN KEY( BarCode ) REFERENCES Product( BarCode ) ON
    DELETE NO ACTION ON
    UPDATE NO ACTION
);
...