2011-09-04 71 views
2

現在,我有我的數據庫設置,以便插入一個新行。但如果我試圖插入的行是重複的(基於我的主關鍵字id),那麼我將計數字段加1。行而不是增加計數。我如何以有效/正確的方式做到這一點?如何知道mysql中的字段/行何時更新成功?

我正在考慮這樣做的當前方法是先查詢id並檢查它是否存在。但我覺得有更快/更好的方法。我也讀過觸發器,但我聽說他們使用不好/有風險。

+0

您的數據庫設置示例請幫助很多 – kritya

+1

冒着說明明顯的風險,不能使用php的if(mysql_query ...),returnint如果成功則返回true,否則返回false – Psyrus

回答

2

使用INSERT ... ON DUPLICATE KEY UPDATE... 那麼對於affected_rows查詢(如@Tarek法德勒建議)。如果行被插入,MySQL將返回1,如果現有行被更新,MySQL將返回2。

+0

真棒謝謝=) – Vadoff

0

如何id列的auto_increment

否則,您可能會使用SELECT MAX(id) FROM TABLE來檢索最高的ID並向其中添加一個ID,但這不是線程安全的,因爲另一個用戶可能同時執行相同的插入操作。 Auto_increment修復了這個問題。

相關問題