Как создать таблицу с несколькими внешними ключами разных таблиц - PullRequest
0 голосов
/ 07 мая 2019

Мне нужно создать таблицу с внешним ключом на основе значения столбца,

table_1:

CREATE TABLE table_1(
index_value INT NOT NULL,
result VARCHAR(10)  DEFAULT NULL
);

table_2:

CREATE TABLE table_2(
index_value INT NOT NULL,
result VARCHAR(10) DEFAULT NULL
)

Таблица table_need для создания двух внешних ключей подключиться к table_1 и table_2, как показано ниже:

table_need:

CREATE TABLE table_need(
index_value INT NOT NULL,
category VARCHAR(10) DEFAULT NULL,
FOREIGN KEY (index_value)
    REFERENCES table_1(index_value)
    ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (index_value)
    REFERENCES table_2(index_value)
    ON DELETE CASCADE ON UPDATE CASCADE);
)

Но таблица table_need Я действительно хочу, чтобы этоподключите базу внешнего ключа для значения столбца category, условие:

  1. , если значение category равно «A», подключите внешний ключ (index_value) к table_1
  2. если category значение равно "B", подключите внешний ключ (index_value) к table_2.

Вот вопрос, как создать таблицу table_need, удовлетворяющую условию и не нуждающуюсясоздать больше таблиц, есть идеи?

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете создать одну таблицу вместо table_1 и table_2, как показано ниже -

CREATE TABLE table_1
(
    index_value INT NOT NULL,
    category VARCHAR(1)  NOT NULL,
    result VARCHAR(10)  DEFAULT NULL
);

Храните A или B в столбце «Категория» согласно вашему требованию. И теперь вы можете создать таблицу "table_need", используя одну ссылку внешнего ключа, используя CASCADE. А для дальнейшего выбора данных просто различайте записи, фильтруя Category = 'A' или Category = 'B'

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