gpt4 book ai didi

mysql - 尝试更新主键值时出错

转载 作者:行者123 更新时间:2023-11-29 10:31:04 25 4
gpt4 key购买 nike

我正在尝试更新记录的所有值,包括主键值user_name,所以我所做的是创建一个变量@username1来保存当前用户名(以便我可以在 where 子句中使用它),@username 保存我想要更新的用户名的新值。

但是每次执行该过程时,都会出现错误:

Violation of PRIMARY KEY constraint 'PK__Users__7C9273C5C682108D'. Cannot insert duplicate key in object 'dbo.Users'

alter proc updateinfo 
@username1 varchar(20),
@username varchar(20),
@password varchar(15) ,
@personal_email varchar(50),
@experience int ,
@date_of_birth datetime ,
@first_name varchar(20),
@middle_name varchar(20) ,
@last_name varchar(20)
as
begin
update Users
set user_name=@username, password=@password, personal_email=@personal_email,
experience=@experience, date_of_birth=@date_of_birth,
first_name = @first_name, middle_name=@middle_name, last_name=@last_name
where EXISTS (select user_name from users where user_name=@username1)
end

最佳答案

这是因为您的查询有效地尝试更新表的所有行:

update Users
...
where EXISTS (select user_name from users where user_name=@username1)

这意味着只要 users 中有一行 user_name 等于您输入的 @username1所有users 将被更新 - 因为无论考虑更新哪一行,EXISTS 条件都将为 true。幸运的是,此类更新将会失败,因为它会尝试将多个 user_name 设置为相同的值。

您可能想做的是:

update Users
set user_name=@username, password=@password, personal_email=@personal_email,
experience=@experience, date_of_birth=@date_of_birth, first_name = @first_name,
middle_name=@middle_name, last_name=@last_name
where user_name=@username1

关于mysql - 尝试更新主键值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47407744/

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