現在,我有我的數據庫設置,以便插入一個新行。但如果我試圖插入的行是重複的(基於我的主關鍵字id
),那麼我將計數字段加1。行而不是增加計數。我如何以有效/正確的方式做到這一點?如何知道mysql中的字段/行何時更新成功?
我正在考慮這樣做的當前方法是先查詢id
並檢查它是否存在。但我覺得有更快/更好的方法。我也讀過觸發器,但我聽說他們使用不好/有風險。
現在,我有我的數據庫設置,以便插入一個新行。但如果我試圖插入的行是重複的(基於我的主關鍵字id
),那麼我將計數字段加1。行而不是增加計數。我如何以有效/正確的方式做到這一點?如何知道mysql中的字段/行何時更新成功?
我正在考慮這樣做的當前方法是先查詢id
並檢查它是否存在。但我覺得有更快/更好的方法。我也讀過觸發器,但我聽說他們使用不好/有風險。
使用INSERT ... ON DUPLICATE KEY UPDATE...
那麼對於affected_rows查詢(如@Tarek法德勒建議)。如果行被插入,MySQL將返回1,如果現有行被更新,MySQL將返回2。
真棒謝謝=) – Vadoff
使用您的數據庫AUTO INCREMENT選項爲您的主ID字段。只有propper解決方案。
在這裏,你有mysql參考,但在短短的每個數據庫引擎存在: http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
如何id列的auto_increment?
否則,您可能會使用SELECT MAX(id) FROM TABLE
來檢索最高的ID並向其中添加一個ID,但這不是線程安全的,因爲另一個用戶可能同時執行相同的插入操作。 Auto_increment修復了這個問題。
您的數據庫設置示例請幫助很多 – kritya
冒着說明明顯的風險,不能使用php的if(mysql_query ...),returnint如果成功則返回true,否則返回false – Psyrus