【问题标题】:"missing right parenthesis" - 00907. 00000“缺少右括号” - 00907. 00000
【发布时间】:2021-01-28 00:55:58
【问题描述】:
CREATE TABLE Sale_FactTable 
(EmpID NUMBER FOREIGN KEY REFERENCES Employee_Dimension(EmpID),
ProductNum NUMBER FOREIGN KEY REFERENCES Product_Dimension(ProductNum),
SupplierNum NUMBER FOREIGN KEY REFERENCES Supplier_Dimension(SupplierNum),
SaleID NUMBER FOREIGN KEY REFERENCES SALE(SaleID),
ClerkID NUMBER FOREIGN KEY REFERENCES Sale_Clerk_Dimension (ClerkID),
ProductID NUMBER FOREIGN KEY REFERENCES Product_Dimension(ProductID),
BranchID NUMBER FOREIGN KEY REFERENCES Branch_Dimension(BranchID),
LineID NUMBER FOREIGN KEY REFERENCES Sale_Line_Item_Dimension(LineID),
CustomerID NUMBER FOREIGN KEY REFERENCES Customer_Dimension(CustomerID),
SaleDate Date FOREIGN KEY REFERENCES Sale_Line_Item_Dimension(SaleDate));

Error:
Error starting at line : 60 in command -
CREATE TABLE Sale_FactTable 
(EmpID NUMBER FOREIGN KEY REFERENCES Employee_Dimension(EmpID),
ProductNum NUMBER FOREIGN KEY REFERENCES Product_Dimension(ProductNum),
SupplierNum NUMBER FOREIGN KEY REFERENCES Supplier_Dimension(SupplierNum),
SaleID NUMBER FOREIGN KEY REFERENCES SALE(SaleID),
ClerkID NUMBER FOREIGN KEY REFERENCES Sale_Clerk_Dimension (ClerkID),
ProductID NUMBER FOREIGN KEY REFERENCES Product_Dimension(ProductID),
BranchID NUMBER FOREIGN KEY REFERENCES Branch_Dimension(BranchID),
LineID NUMBER FOREIGN KEY REFERENCES Sale_Line_Item_Dimension(LineID),
CustomerID NUMBER FOREIGN KEY REFERENCES Customer_Dimension(CustomerID),
SaleDate Date FOREIGN KEY REFERENCES Sale_Line_Item_Dimension(SaleDate))
Error report -
ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

【问题讨论】:

  • 我更改了标签。 “ORA-00907”错误适用于 Oracle,而不是 MySQL。 NUMBER 也是 Oracle 数据类型,MySQL 无法识别。
  • 您混淆了语法。取出所有FOREIGN KEY文字;或者将 FK 单独构建到列定义中。
  • 您好,请在发布问题时提供一些描述。顺便说一句,这是一个非常常见的问题 (ORA-00907)。这篇文章为这个问题提供了一组可靠的答案,stackoverflow.com/questions/48045336/…

标签: sql oracle foreign-keys create-table ora-00907


【解决方案1】:

声明内联外键的语法是:

<column_name> <datatype> references <parent_table(parent_column_name)>

所以基本上是这样的:

empid number foreign key references employee_dimension(empid)

应该写成:

empid number references employee_dimension(empid)

或者,您可以在单独的子句中声明外键,这样您就有机会选择键的名称(与内联语法相反,其中名称由数据库自动选择):

empid number,
constraint empid_fk foreign key references employee_dimension(empid)

【讨论】:

    【解决方案2】:

    试试

    CREATE TABLE sale_facttable
    (
       empid         NUMBER    REFERENCES employee_dimension (empid),
       productnum    NUMBER    REFERENCES product_dimension (productnum),
       suppliernum   NUMBER    REFERENCES supplier_dimension (suppliernum),
       saleid        NUMBER    REFERENCES sale (saleid),
       clerkid       NUMBER    REFERENCES sale_clerk_dimension (clerkid),
       productid     NUMBER    REFERENCES product_dimension (productid),
       branchid      NUMBER    REFERENCES branch_dimension (branchid),
       lineid        NUMBER    REFERENCES sale_line_item_dimension (lineid),
       customerid    NUMBER    REFERENCES customer_dimension (customerid),
       saledate      DATE    REFERENCES sale_line_item_dimension (saledate)
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2018-05-23
      相关资源
      最近更新 更多