2016-01-22 51 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恰好是所需的值這對應於我們在這種情況下需要的外鍵索引。