更改MySQL中的外键引用列

更改MySQL中的外键引用列,mysql,foreign-keys,Mysql,Foreign Keys,我有一个名为Records的表和一个名为Users的表 记录当前对列用户具有外键约束。Username和我希望将其更改为reference Users.ID 我的问题是,在删除Users.Username列的同时,如何维护记录和用户之间的关系 这是针对MySQL InnoDB的。首先使用Users.ID以及提供的用户创建外键映射。Username是唯一的,并且与Users.ID有一对一的关系。完成后,可以删除对Users.Username的约束 最后,我不得不创建一个过程来迭代用户表中的每一行,

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

记录当前对列用户具有外键约束。Username和我希望将其更改为reference Users.ID

我的问题是,在删除Users.Username列的同时,如何维护记录和用户之间的关系


这是针对MySQL InnoDB的。

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

最后,我不得不创建一个过程来迭代用户表中的每一行,并更新记录表中与每个Users.Username匹配的Records.user\id列


“我的问题是,如何维持两者之间的关系”-你在这里关心什么?
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 ;