ORA-00904 ::无效的标识符

时间:2010-12-15 16:59:39

标签: sql oracle oracle10g 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);

2 个答案:

答案 0 :(得分:9)

Oracle标识符的最大长度为30个字符。超过这个,是32个字符长:

  • fk_Customer_has_Product_Customer
  • fk_Customer_has_Product_Product1

请参阅Schema Object Naming Rules

答案 1 :(得分:8)

如前所述,将“DATE”更改为更具描述性而非保留的内容。另外,似乎TINYINT在表格中不起作用,所以改为NUMBER(1),以及Tony正确的减少名称大小的建议(< = 30 chrs)

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
);