只是想弄清楚爲什麼僞造者交易行爲不像我預期的那樣。codeigniter交易 - trans_start trans_complete trans_status
此交易TRANS_STATUS()觸發器 'TRANS成功':
$this->db->trans_start();
$this->db->query("UPDATE `TABLE1` SET `NAME` = 'AAA' WHERE `ID` = '1'");
$this->db->query("UPDATE `TABLE2` SET `NAME` = 'BBB' WHERE `ID` = '2'");
$this->db->trans_complete();
if($this->db->trans_status() === FALSE){// Check if transaction result successful
echo "<BR>------- TRANS FAILED -------</BR>";
}else{
echo "<BR>------- TRANS SUCCESS -------</BR>";
}
TABLE1獲取與 'AAA' 和TABLE2更新獲取與「BBB更新'
此交易TRANS_STATUS()報告 'TRANS失敗' 正如所料,因爲 'incorrectID' 一欄確實不存在於TABLE2:
$this->db->trans_start();
$this->db->query("UPDATE `TABLE1` SET `NAME` = 'AAA' WHERE `ID` = '1'");
$this->db->query("UPDATE `TABLE2` SET `NAME` = 'BBB' WHERE `incorrectID` = '2'");
$this->db->trans_complete();
if($this->db->trans_status() === FALSE){// Check if transaction result successful
echo "<BR>------- TRANS FAILED -------</BR>";
}else{
echo "<BR>------- TRANS SUCCESS -------</BR>";
}
TABLE1 IS 不與 'AAA' 和TABLE2更新IS 不與 'BBB' 更新
然而,這個交易TRANS_STATUS( )報告'TRAN成功 '即使沒有ID與價值' 「TABLE2:?!?!
$this->db->trans_start();
$this->db->query("UPDATE `TABLE1` SET `NAME` = 'AAA' WHERE `ID` = '1'");
$this->db->query("UPDATE `TABLE2` SET `NAME` = 'BBB' WHERE `ID` = '55'");
$this->db->trans_complete();
if($this->db->trans_status() === FALSE){// Check if transaction result successful
echo "<BR>------- TRANS FAILED -------</BR>";
}else{
echo "<BR>------- TRANS SUCCESS -------</BR>";
}
TABLE1DOES與更新'AAA'and TABLE2不得到更新,因爲有上TABLE2的 NO ID - 但我希望它回滾,因爲TABLE2更新將不會成功。
什麼給?我認爲交易背後的想法是,所有trans_start()和trans_complete()必須成功,整個交易才能成功。否則,整個交易回滾。
我已經嘗試過SET和UPDATE,並有同樣的問題。 第一DB->查詢()將承諾並保存更改,離開第二DB->查詢()未了和TRANS_STATUS()報告爲成功???
缺少什麼我在這裏?
謝謝大家:)
問候。
我認爲問題可能是Codeigniters事務'$ _trans_status'只有在查詢失敗時被設置爲false。無法返回結果的查詢在代碼工眼中不會失敗。 – Jeemusu
嗯......好吧 - 那麼它不關心交易是否成功完成 - 但交易沒有格式錯誤? – KDawg
我仍然困惑 - 如果我的電話是創建一個記錄怎麼辦 - 我只想繼續交易,如果記錄A創建...如果它不關心,如果實際成功的電話....什麼是點...仍然困惑 - 但感謝您的回覆:) – KDawg