我有一个名为Records
的表和一个名为Users
的表。
Records
当前具有对列Users
。Username
的外键约束,我想将其更改为引用Users
。ID
。 / p>
我的问题是,如何在删除Records
。Users
列的同时保持Users
和Username
之间的关系?
这是针对MySQL InnoDB的。
答案 0 :(得分:0)
首先使用Users.ID创建一个外键映射,同时提供Users.Username是唯一的,并且与Users.ID具有一对一的关系。完成后,您可以删除对Users.Username的约束。
答案 1 :(得分:0)
我最终不得不创建一个过程来遍历Users
表中的每一行并更新Records
表中新的user_id
。Records
列每个Users
。Username
。
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 ;