2012-02-12 21 views
0

我無法找到對此的答案,而且很可能是因爲它有一個我不知道的名字。 Anywho。停止mysql操作,直到全部返回true

如果你有一個數據庫上的多個操作,e.g:

if(insert_something_to_db($data) == TRUE){ 
    if(delete_something_else_from_db($data2) == TRUE){ 
      if(update_something_related_to_the_others_in_db($data3) == TRUE){ 
       return TRUE; 
      } 
    } 
} else { 
    return FALSE; 
} 

如果任何嵌套查詢失敗,那麼先前的操作會已經結束,這將導致數據庫中的數據雜亂。是否有/有一些技術/最佳實踐,停止執行操作,直到你知道它們是否會成功。

我有一個例子:

如果一個人想加入羣,他點擊「加入集團 - 通知在數據庫中創建。這顯示在該組所有者的管理面板中。 - 組所有者可以拒絕/接受該應用程序。

接受: - 申請人用戶數據更新爲新的組信息。 - 最初發送給組管理員的通知將被刪除 - 爲申請人創建新通知,通知他他被接受。

只有當最外層條件返回false(可以說用戶數據更新)時,實際數據庫纔會保存原始數據。如果第一次更新通過但不是下一次,則更新配置文件以反映與新組的鏈接,但組管理員區域中的通知沒有消失。

問候 丹尼斯

回答

3

你希望所有的疑問是在一個transaction,以確保全有或全無的行爲。

基本上,你會:

  • 開始交易
  • 做你的查詢
  • 最後
    • 如果所有查詢都獲得了成功,提交事務
    • 否則,回滾交易


您可能需要閱讀,更普遍的信息:Database transaction

+0

優秀。謝謝。 – Dennis 2012-02-12 13:34:10

+0

不客氣:-)玩得開心! – 2012-02-12 13:35:23