轻松更改表数据以无限制地添加外键

时间:2018-04-27 15:06:10

标签: mysql

我试图将外键添加到用一堆虚拟数据播种的测试数据库中。我可以去MySQL外面,导出一个缺少ID的列表,并在Python中生成一堆插入语句但是我想知道是否有办法在MySQL中处理这个问题

ALTER TABLE `kalos`.`award` 
CHANGE COLUMN `awardee_user_id` `awardee_user_id` INT(11) NULL ;
ALTER TABLE `kalos`.`award` 
ADD CONSTRAINT `fk_award_3`
  FOREIGN KEY (`awardee_user_id`)
  REFERENCES `kalos`.`user` (`user_id`)
  ON DELETE RESTRICT
  ON UPDATE CASCADE;

我已尝试弄乱ON DELETEON UPDATE属性,但它肯定不会让我应用它,因为{{1}中有用户ID award表中不存在的表(3000个中只有大约200个)。就像我说用Python做这个很简单,但是我已经碰到过几次这个问题了,我很好奇看看MySQL是否可以自己处理这样的事情。

1 个答案:

答案 0 :(得分:0)

我想出来了,这非常简单。

DELETE FROM t1 
WHERE
    t1.id NOT IN (SELECT 
        id
    FROM
        (SELECT 
            tmp.id AS id
        FROM
            t1
        INNER JOIN t2 ON t1.id = t2.id) as tmp)

这将从t1中删除t2中没有相应记录的任何行