我正在使用MySQL + PHP。我有一些代碼可以根據自動付款表何時到期自動生成付款(因此您可以計劃未來付款...等)。自動腳本在網站上運行後運行,有時會同時運行兩次。爲了避免這種情況,我們生成一個uuid用於支付某個特定自動付款的第n次付款。我們還使用交易來封裝整個付款生成流程。使用插入忽略(或類似)和唯一ID的MySQL事務處理
作爲其中的一部分,如果存在重複的uuid,我們需要整個事務失敗,但獲取實際的數據庫錯誤會向用戶顯示錯誤。我可以在付款插入SQL中使用插入忽略嗎?警告是否會終止交易?如果沒有,如果有重複的uuid,我該如何殺掉交易?
澄清:如果INSERT失敗,我如何才能讓它不會拋出程序停止錯誤,而是終止/回滾事務?
請注意,插入會在提交時失敗,而不是在PHP中的初始執行。
非常感謝!
從您的問題確切地說明交易是如何處理的並不清楚。一些更具體的例子可能有助於縮小合適的解決方案。在嘗試插入之前,是否有原因檢查是否存在UUID?如果您使用的是交易,則應該注意回滾任何更改。如果一切都失敗了,你可以使用[handlers](http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html)來執行一種形式的異常處理,但不應該這樣做以妥善構建的重複測試爲代價。 – Mike 2010-06-28 21:36:24