ORA-00904 :: Неверный идентификатор
Вопрос
Я пытаюсь создать таблицу в 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);
Решение
Как упоминалось ранее, измените «дату» на нечто более описательное и не зарезервированное. Кроме того, кажется Tinyint Не работает в таблице создавать, поэтому измените это на число (1), а также правильное предложение Тони уменьшить размер имени (<= 30 хр)
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
);
Другие советы
Максимальная длина для идентификатора Oracle составляет 30 символов. Они превышают, что 32 чара длиной:
- fk_customer_has_product_customer
- fk_customer_has_product_product1
Не связан с StackOverflow