Oracle (ORA-02270): пробовал следовать другим ответам, но не может понять это - PullRequest
0 голосов
/ 23 мая 2018

Полный новичок здесь.Я пытался возиться с этим кодом, и я обрезал его до:

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 голосов
/ 23 мая 2018

Внешний ключ, который вы пытаетесь создать в столбце Recorded_On в таблице продукта, должен ссылаться на первичный ключ или уникальный ключ.Столбец Recorded_On в вашей таблице Sale должен быть изменен на уникальный или не создавать для него никаких ограничений.

После устранения этой ошибки следующая проблема, с которой вы столкнетесь, - это ограничения, не имеющие уникальных имен.

ORA-02264: name already used by an existing constraint

Имя ограничения Product_PK & Product_FK повторяется дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...