Question

Je suis en train de créer une table dans Oracle et d'obtenir l'erreur: ORA-00904: : invalid identifier

Voici ma commande. Je ne vois vraiment pas un problème en elle. S'il vous plaît me aider à identifier l'erreur. Merci.

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);
Était-ce utile?

La solution

Comme mentionné précédemment, le changement « DATE » à quelque chose de plus descriptif et non réservé. En outre, il semble TINYINT ne fonctionne pas une table créer afin que le changement de numéro (1), ainsi que la suggestion correcte de Tony de réduire la taille du nom (<= 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
);

Autres conseils

La longueur maximale d'un identifiant Oracle est de 30 caractères. Ceux-ci dépassent que de 32 caractères de long:

  • fk_Customer_has_Product_Customer
  • fk_Customer_has_Product_Product1

Voir schéma Règles de nommage des objets

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top