无法创建表,因为主键在另一个表中用作外键

时间:2020-04-09 21:44:37

标签: sql-server

Create Table Customer 
(
    Cus_id Varchar2(10) NOT NULL Primary Key,
    Cus_FirstName Varchar2(20) NOT NULL,
    Cus_LastName Varchar2 (20) NOT NULL,
    Cus_Address Varchar2(25) NOT NULL,
    Cus_City_State_Zip Varchar2(30) NOT NULL
);

Create Table Order_ 
(
    Order_id Varchar2(10) NOT NULL Primary Key,
    Order_Date Varchar2(12) NOT NULL,
    Order_Status Varchar(12) NOT NULL
);

Create Table Item 
(
    Item_id Varchar2(10) NOT NULL Primary Key,
    Item_Name Varchar2(20) NOT NULL,
    Item_Price Varchar2(10) NOT NULL
);

Create Table CustomerOrderItem 
(
    Quantity Varchar2(8) NOT NULL, 
    Cus_id Varchar(10) NOT NULL Primary Key,
    Order_id Varchar(10) NOT NULL Primary Key, 
    Item_id Varchar(10) NOT NULL Primary Key,
    Foreign Key(Cus_id) References Customer(Cus_id),
    Foreign Key(Oreder_id) References Order_(Order_id),
    Foreign Key(Item_id) References Item(Item_id)
);

此代码是一个包含重复订单和一个订单有多个项目的客户表。当我尝试将值插入表并创建它们时。由于它们的依赖性,我创建了第四个表,并在其中放置了三个主键作为主键和外键。它不允许我创建表,因为主键在另一个表中用作外键,因此我需要先删除它们才能创建表。

2 个答案:

答案 0 :(得分:2)

您的数据架构既不匹配您所描述的内容,也不符合SQL Server的正确语法。撇开不良的设计,这就是您要尝试做的事情:

Create Table Customer ( Cus_id Varchar(10) NOT NULL Primary Key, 
  Cus_FirstName Varchar(20) NOT NULL, 
  Cus_LastName Varchar (20) NOT NULL, 
  Cus_Address Varchar(25) NOT NULL, 
  Cus_City_State_Zip Varchar(30) NOT NULL );

Create Table Order_ ( Order_id Varchar(10) NOT NULL Primary Key, 
   Order_Date Varchar(12) NOT NULL, 
   Order_Status Varchar(12) NOT NULL );

Create Table Item ( Item_id Varchar(10) NOT NULL Primary Key, 
  Item_Name Varchar(20) NOT NULL, 
  Item_Price Varchar(10) NOT NULL );

Create Table CustomerOrderItem ( Quantity Varchar(8) NOT NULL, 
  Cus_id Varchar(10) NOT NULL, 
  Order_id Varchar(10) NOT NULL, 
  Item_id Varchar(10) NOT NULL,
constraint PK_CustomerOrderItem primary key (cus_id, order_id, item_id), 
constraint FK_COI_Customer Foreign Key(Cus_id) References Customer(Cus_id), 
constraint FK_COI_Order Foreign Key(Order_id) References Order_(Order_id), 
constraint FK_COI_Item Foreign Key(Item_id) References Item(Item_id) );

检查Northwind示例数据库以获得更好的示例,甚至更好的情况下,将AdventureWorks示例数据库作为入门者。

答案 1 :(得分:0)

您收到ORA-02449的错误消息是由于试图删除一个已被作为CustomerOrderItem表中的主键引用的表而解决的,要解决此问题,请先删除CustomerOrderItem表,然后再删除其他表。 祝你好运。

相关问题