gpt4 book ai didi

mysql - 将varchar列更改为另一个表SQL的外键

转载 作者:行者123 更新时间:2023-11-29 11:18:00 24 4
gpt4 key购买 nike

我试图将列的 varchar 值更改为另一个表中的 id 外键值,但我似乎无法进行转换,总是抛出错误。

用户表...

CREATE TABLE User(
UserId INT NOT NULL AUTO_INCREMENT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(50),
Username VARCHAR(20) NOT NULL,
Password VARCHAR(50) NOT NULL,
RoleName VARCHAR(50) NOT NULL,
LastLogin DATETIME,

PRIMARY KEY(UserId)
);

INSERT INTO User
(FirstName, LastName, Email, Username, Password, RoleName)
VALUES

...

角色名称表...

create table rolename(
RoleId int not null auto_increment,
RoleName varchar(50),
primary key(RoleId)
);
insert into rolename(RoleName) select distinct RoleName from user;

现在,我需要做的是让 User 表中的 RoleName 列指向 RoleName 表中的键。我一直在尝试这个,但总是给我一个错误。

update user set user.`RoleName` = rolename.`RoleId` from user inner join rolename on user.`RoleName` = rolename.`RoleName`;

我也不确定我是否使用该代码正确设置了外键...

最佳答案

不,你做错了。您将 id 放入 User 表中。要解决此问题:

alter table user add roleid int;
alter table user add constraint fk_user_roleid foreign key (roleid) references rolename(roleid);

然后填充值:

update user u join
rolename r
on r.rolename = u.rolename
set u.roleid = r.roleid;

并摆脱旧的专栏!

alter table user drop column rolename;

关于mysql - 将varchar列更改为另一个表SQL的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com