天天看點

MySQL 小心使用 replace intoMySQL replace into 錯誤案例

其他字段value莫名其妙的沒了

step1 初始化記錄

step2 構造錯誤場景

總結

col_3 的值,從原來的c,變成了null,天呐,資料不見了。 id 也變了。

使用者原本的需求,應該是如果col_1='c' 存在,那麼就改變col_2='cc',其餘的記錄保持不變,結果id,col_3都變化了

解決方案就是:将replace into 改成 insert into … on duplicate key update

但是你以為這樣就完美的解決了嗎? 馬上就會帶來另外一場災難,請看下面的錯誤場景

error 1062 (23000): duplicate entry 'x' for key 'primary'

step3 錯誤案例産生

replace with unique key

replace with primary key

繼續閱讀