更改MySQL中的外键参考列

时间:2019-12-26 03:27:38

标签: mysql foreign-keys

我有一个名为Records的表和一个名为Users的表。

Records当前具有对列UsersUsername的外键约束,我想将其更改为引用UsersID。 / p>

我的问题是,如何在删除RecordsUsers列的同时保持UsersUsername之间的关系?

这是针对MySQL InnoDB的。

2 个答案:

答案 0 :(得分:0)

首先使用Users.ID创建一个外键映射,同时提供Users.Username是唯一的,并且与Users.ID具有一对一的关系。完成后,您可以删除对Users.Username的约束。

答案 1 :(得分:0)

我最终不得不创建一个过程来遍历Users表中的每一行并更新Records表中新的user_idRecords列每个UsersUsername

DROP PROCEDURE IF EXISTS UPDATE_USERS;    
DELIMITER ;;
CREATE PROCEDURE UPDATE_USERS()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SELECT COUNT(*) FROM `Users` INTO n;
SET i=0;
WHILE i < n DO
    UPDATE `Records` SET user_id=(SELECT id from `Users` LIMIT i,1) WHERE USERNAME=(SELECT USERNAME from `Users` LIMIT i,1);
    SET i = i + 1;
END WHILE;
END;
;;
DELIMITER ;
相关问题