问题描述
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),SaleDate Date FOREIGN KEY REFERENCES Sale_Line_Item_Dimension(SaleDate))
Error report -
ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
解决方法
声明内联外键的语法为:
<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)
,
尝试为
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)
);