Первичный ключ дочерней таблицы как внешний ключ в родительской таблице в Oracle - PullRequest
0 голосов
/ 05 октября 2018

У меня есть две таблицы:

Магазин

(PK: StoreID)

Магазин является общим родителем и

Продукт

 Product (PK: ProductID, FK: StoreID)

является дочерним.

Я застрял в требовании, когда для приложения Первичный ключ ProductID должен быть внешним ключом в таблице Store .Не уверен, что это сработает.Я пробовал это в пользовательской среде с серверной частью Oracle, но она не работает должным образом.

Примечание : я не могу изменить схему.

1 Ответ

0 голосов
/ 05 октября 2018

Мне не удалось полностью понять ваш вопрос, но возможно иметь несколько ссылок между двумя таблицами.Например:

create table store (
  storeid number(6) primary key not null,
  name varchar2(20) not null,
  last_productid number(6) not null -- not yet a FK, but later it is.
);

create table product (
  productid number(6) primary key not null,
  name varchar2(50) not null,
  storeid number(6) not null,
  constraint fk1 foreign key (storeid) references store (storeid)
);

alter table store add
  constraint fk2 foreign key (last_productid) references product (productid);

Столбец last_productid, который вы хотите добавить (хотите?), Немного сложнее.У вас есть два варианта:

  • Это не обнуляется.Это происходит, когда вы хотите, чтобы каждый магазин ВСЕГДА имел last_productid.Вам нужно будет указать это DEFERRABLE, чтобы можно было вставить магазин и первый товар.

  • Это допускает обнуление.Тогда некоторые магазины будут указывать на товар, а другие - нет.Это простой случай, так как вы можете легко вставить / обновить таблицу store.

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