MySQL为同一外键更改两列

时间:2019-06-14 10:19:52

标签: mysql sql foreign-keys alter-table alter

我有一个名为user的表,主键为user_id

我还有另一个名为follows的表。该表用于存储哪个用户关注哪个用户(类似于twitter关注功能)。

这是我的关注表。

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_idfollow_user_id设置为用户表user_id的外键...

如果从用户表中删除了一个用户,我想自动删除以下表中的行,即该用户ID出现在orginal_user_id列或follow_user_id列上。

1 个答案:

答案 0 :(得分:2)

您可以在表中使用级联删除约束:

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;