2016-01-22 21 views
-1

必须有一种方法来更新一个MySQL字段从NULL值到另一个值,而不使用SET FOREIGN_KEY_CHECKS = 0,正确吗?mysql更新整个空列有外键检查

我尝试这样做:

update tablename set fieldname = "textstring" where fieldname is null; 

而且貌似改列只有当我询问该列,而不是当我查询了从表中整行的结果值。如何添加满足引用表约束的另一个条件,以便更新该字段?

这里的基本结构:

{Database:businesses,{company:[id,name,address,phone],employee:[id,company(fk),role]}} 

在雇员表中,ID和角色字段已经填好了,不过公司值都是NULL。我想用“somestring”替换这个字段中的NULL。我在Linux Ubuntu发行版中使用了mysql 5.5。

+0

“仅当我查询该列的结果时才更改列的值,而不是当我查询表中的整行时”什么? – miken32

+0

当我查询>从员工中选择公司时,我看到值“somestring” - 但是,当我从employeesee中查询> select *时,公司字段的值仍然显示为空,表示它们没有被更改。 – DNburtonguster

+1

我觉得这不太可能...... – miken32

回答

0

我从来没有回答过这个问题,所以我最终以老式的方式解决了问题。如果我分享它,也许会使某人受益。请注意,我不能让周围唬弄外键检查,所以建议仍然开放如何做到这一点最好在生产环境中执行:

SET FOREIGN_KEY_CHECKS = 0; -- disable a foreign keys check 
UPDATE employee SET company = IFNULL(company,1); 
SET FOREIGN_KEY_CHECKS = 1; 

设置公司的价值为1恰好是所需的值这对应于我们在这种情况下需要的外键索引。