用外键mysql更新属性值

时间:2012-09-12 12:27:19

标签: mysql

如果我尝试使用以下查询更改'askexpert'表的usertypeid属性的值:

UPDATE aura_users_logins SET user_types_id="some value" WHERE user_profiles_id="some value";

它抛出错误:

foreign key constraint fails (`aura`.`askexpert`, CONSTRAINT 
fk_askexpert_aura_users_logins` FOREIGN KEY (`user_id `aura_users_logins_user_types_id`) 
REFERENCES `aura_users_logins` (`user_id`, `user_types_id`).

但我可以使用以下查询更改Userid。

UPDATE aura_users_logins SET user_profiles_id="some value" WHERE uuser_profiles_id="some value";

3 个答案:

答案 0 :(得分:1)

  

但我可以使用以下查询更改Userid

UPDATE aura_users_logins SET user_profiles_id

不,你没有。您正在更新user_profiles_id列。

如果你真的想,请做

SET FOREIGN_KEY_CHECKS = 0

第一。稍后再将其重新设置为1

答案 1 :(得分:1)

最好看看你的表结构,但似乎你的“askexpert”表有一个“aura_users_logins”列的外键(user_iduser_types_id

如果更新“user_types_id”列,“askexpert”上的行将没有有效的引用。

如果您想更新价值,请:

  • 禁用外键
  • 使用新值在“aura_users_logins”上创建一个新行,然后更新“askexpert”

答案 2 :(得分:0)

因为“aura_users_logins”有一个外键“user_types_id”,它指的是其他表的主键。所以,你必须确保另一个表包含密钥作为主键,你在查询中更新。

UPDATE aura_users_logins SET user_types_id="some value" WHERE user_profiles_id="some value";

“some value”必须在其他表中作为主键。