Oracle(ORA-02270):尝试过其他答案,但无法弄明白

时间:2018-05-23 07:06:45

标签: sql oracle

在这里完成初学者。我一直试图搞砸这段代码,然后把它剥离回来:

create table Customer
(
  Customer_Num varchar2(7) not null,
  Surname       varchar2(50) not null,
  Other_Names   varchar2(100) not null,
  Email         varchar2(320) not null,  
  Mobile_Phone  varchar2(20) not null,

  constraint Customer_PK primary key (Customer_Num)
);

create table Store
(
  Store_ID     varchar2(5) not null,
  Region      varchar2(50) not null,


  constraint Store_PK primary key (Store_ID)

);


create table Sale
(
  Store_ID       varchar2(5) not null,
  Recorded_On timestamp not null,
  Customer_Num varchar2(7) not null,
  Comments      varchar2(4000), 

  constraint Product_PK primary key (Store_ID, Recorded_On),
  constraint Sale_Store_FK foreign key (Store_ID) references Store(Store_ID),
  constraint Sale_Customer_FK foreign key (Customer_Num) references Customer(Customer_Num)
);

create table Product
(
  Store_ID varchar2(5) not null,
  Recorded_On timestamp not null,
  Product_Name varchar2(50),
  Value varchar2(50),

  constraint Product_PK primary key(Value),
  constraint Product_FK foreign key(Store_ID) references Store(Store_ID),
  constraint Product_FK foreign key(Recorded_On) references Sale(Recorded_On)

);
Error starting at line : 67 in command -
create table Product
(
  Store_ID varchar2(5) not null,
  Recorded_On timestamp not null,
  Product_Name varchar2(50),
  Value varchar2(50),

  constraint Product_PK primary key(Value),
  constraint Product_FK foreign key(Store_ID) references Store,
  constraint Product_FK foreign key(Recorded_On) references Sale(Recorded_On)

)

错误报告 -

SQL Error: ORA-02270: no matching unique or primary key for this column-list
02270. 00000 -  "no matching unique or primary key for this column-list"
*Cause:    A REFERENCES clause in a CREATE/ALTER TABLE statement
           gives a column-list for which there is no matching unique or primary
           key constraint in the referenced table.
*Action:   Find the correct column names using the ALL_CONS_COLUMNS
           catalog view

提前致谢!

  • 更新*

我已更改代码如下

create table Customer
(
  Customer_Num varchar2(7) not null,
  Surname       varchar2(50) not null,
  Other_Names   varchar2(100) not null,
  Email         varchar2(320) not null,
  Mobile_Phone  varchar2(20) not null,

  constraint Customer_PK primary key (Customer_Num)
);

create table Store
(
  Store_ID     varchar2(5) not null,
  Region      varchar2(50) not null,


  constraint Store_PK primary key (Store_ID)

);


create table Sale
(
  Store_ID       varchar2(5) not null,
  Recorded_On timestamp not null UNIQUE,
  Customer_Num varchar2(7) not null,
  Comments      varchar2(4000), 

  constraint Sale_PK primary key (Store_ID, Recorded_On),
  constraint Sale_Store_FK foreign key (Store_ID) references Store(Store_ID),
  constraint Sale_Customer_FK foreign key (Customer_Num) references Customer
);

create table Product
(
  Store_ID varchar2(5) not null,
  Recorded_On timestamp not null,
  Product_Name varchar2(50),
  Value varchar2(50),

  constraint Product_PK primary key(Store_ID, Recorded_On),
  constraint Product_Store_FK foreign key(Store_ID) references Store,
  constraint Product_recorded_FK foreign key(Recorded_On) references Sale(Recorded_On)

);

现在我在插入语句时遇到了这个错误:

INSERT INTO Product (Store_ID, Recorded_On, Product_Name, Value) VALUES ('AB1', to_date('10/05/2016 13:11', 'DD/MM/YYYY HH24:MI'), 'Test', 2.0);
Error starting at line : 80 in command -
INSERT INTO Product (Store_ID, Recorded_On, Product_Name, Value) VALUES ('AB1', to_date('10/05/2016 13:11', 'DD/MM/YYYY HH24:MI'), 'Test', 2.0)
Error report -
SQL Error: ORA-02291: integrity constraint (Hemi89.PRODUCT_RECORDED_FK) violated - parent key not found
02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
*Cause:    A foreign key value has no matching primary key value.
*Action:   Delete the foreign key or add a matching primary key.

我在这里感到困惑,因为我相信我已在销售表中的约束Sale_PK主键(Store_ID,Recorded_On)中设置了父键。

1 个答案:

答案 0 :(得分:2)

您尝试在产品表中的Recorded_On列上创建的外键必须引用主键或唯一键。您的Sale表中的Recorded_On列必须更改为唯一,或者不对其创建任何约束。

解决此错误后,您遇到的下一个问题是没有唯一名称的约束。

ORA-02264: name already used by an existing constraint

约束名称Product_PK& Product_FK重复两次。