Frage

Ich versuche, eine Tabelle in Oracle zu erstellen und den Fehler bekommen: ORA-00904: : invalid identifier

Hier ist mein Befehl. Ich kann wirklich kein Problem darin sehen. Bitte helfen Sie mir, den Fehler zu identifizieren. Danke.

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);
War es hilfreich?

Lösung

Wie bereits erwähnt, ändern „DATE“, um etwas mehr beschreibend und nicht reserviert. auch scheint es TINYINT nicht funktioniert eine Tabelle, so Änderung NUMBER (1), sowie Tonys richtigen Vorschlag zur Verringerung der Name Größe (<= 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
);

Andere Tipps

Die maximale Länge für eine Oracle-Kennung beträgt 30 Zeichen. Diese überschreiten, dass sind 32 Zeichen lang:

  • fk_Customer_has_Product_Customer
  • fk_Customer_has_Product_Product1

Siehe Schema Object Naming Regeln

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top