MySQL 中要使用 IF ... ELSE
挺麻煩的,如果要在 insert 失敗 (資料已存在) 以後改對資料做 update 的話,可以考慮使用 INSERT .... ON DUPLICATE KEY
。
假設要在 user 的 table 中,新增 user_id 和 mail:
INSERT INTO `user` ( `user_id`, `mail` ) VALUES ( "zero", "zero@zeroplex.tw" )
當 user_id
是 unique index 時,上面的語法會失敗:duplicated key
。
這時可以使用 MySQL 中的 INSERT … ON DUPLICATE KEY 語法,來讓 MySQL 自動判斷要使用 INSERT 還是 UPDATE:
INSERT INTO `user` ( `user_id`, `mail` ) VALUES ( "zero", "zero@zeroplex.tw" ) ON DUPLICATE KEY UPDATE `mail` = "zero@zeroplex.tw"
上述語法,會讓 MySQL 執行時,若發現 zero 這個使用者已經存在時,變自動去更新他的 mail。