2014-01-25 58 views
0

我需要使用php更新列c,但我在更新語句中使用相同的行數據時出錯了嗎?當使用來自同一行的數據時MySql更新

這是因爲用戶可以更新他的firstsecond名稱,我不能收費。

這樣做會導致任何問題?這會因任何原因失敗嗎?在任何時候之前,c會先更新嗎?

"update names set a = 'Jim', c = concat(a,' ',b); 

首先更新a,然後用a更新c。它安全嗎?

"id" "a"  "b"  "c" 
"1" "Jim" "Doe" "Jim Doe" 
+0

它是安全的,但爲什麼存儲級聯呢?爲什麼不在數據檢索時從底層的列創建它? – eggyal

+0

就是這樣的:-)在c之前不會有更新嗎? – Norman

+0

在這種情況下,你是否考慮過使用'BEFORE INSERT' [trigger](http://dev.mysql.com/doc/en/triggers.html)?我還建議你考慮使用['CONCAT_WS()'](http://dev.mysql.com/doc/en/string-functions.html#function_concat-ws),以便不添加空格if底層的列都是NULL。 – eggyal

回答

0

是的,它是安全的。作爲UPDATE Syntax下記載:

下面的語句中的第二個分配集合col2當前(已更新)col1價值,而不是原來的col1值。結果是col1col2具有相同的值。此行爲不同於標準SQL。

UPDATE t1 SET col1 = col1 + 1, col2 = col1; 
相關問題