質問

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

他のヒント

Oracle識別子の最大長は30文字です。これらはそれを超え、長さ32枚です:

  • fk_customer_has_product_customer
  • fk_customer_has_product_product1

見る スキーマオブジェクトの命名ルール

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top