照 Manual 所列出來的功能,Zend_Db 似乎沒有提供 INSERT ... ON DUPLICATE KEY UPDATE 的功能,所以就得自己做了。
正常的作法是自己寫 SQL query 處理,但我想到的方法就是先 ->insert()
,如果失敗再 ->update()
。拆開來的這兩個動作會使得 MySQL 多花不少 CPU resource,但我暫時不想自己寫 SQL Query (主要是因為嫌 escape 麻煩),先放個 XXX 等以後再 tune。
問題在 ->insert()
後如果遇到 Duplicate 會丟出 Exception,用 try
-catch
的方法我不是很喜歡,但稍微翻過 Zend_Db 的 code,似乎沒辦法改成 return status,所以就只好用 try
-catch
處理。這應該是跟底層的 PDO_MYSQL 有關,Zend_Db 只是在中間的介面。
如果還有遇到其他問題就繼續寫...
Override _insert() 不行嗎?