MySQL изменить два столбца для того же внешнего ключа - PullRequest
0 голосов
/ 14 июня 2019

У меня есть таблица с именем user, а первичный ключ - user_id.

У меня есть другая таблица с именем follows.Эта таблица предназначена для хранения того, какой пользователь следит за каким пользователем (это что-то вроде функции Twitter Follow).

Это моя таблица подписки.

CREATE TABLE `follows` (
  `id` int(11) NOT NULL,
  `orginal_user_id` int(11) NOT NULL,
  `follow_user_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `follows`
  ADD PRIMARY KEY (`id`);

Итак, как мне изменить эту таблицу, чтобы установить orginal_user_id и follow_user_id в качестве внешнего ключа user_id таблицы пользователя...

Если пользователь удален из пользовательской таблицы, я хочу автоматически удалить строки в следующей таблице, либо этот идентификатор пользователя появится в столбце orginal_user_id, либо в столбце follow_user_id.

1 Ответ

2 голосов
/ 14 июня 2019

Вы можете использовать ограничения каскадного удаления в своей таблице:

CREATE TABLE follows (
    id int(11) NOT NULL PRIMARY KEY,
    orginal_user_id int(11) NOT NULL,
    follow_user_id  int(11) NOT NULL,
    CONSTRAINT fk_original_user FOREIGN KEY (orginal_user_id)
        REFERENCES user(id) ON DELETE CASCADE,
    CONSTRAINT fk_follow_user FOREIGN KEY (follow_user_id)
        REFERENCES user(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
...