天天看點

CI資料庫參考-事務

一、運作事務

要使用事務來運作你的查詢,你可以使用 $this->db->trans_start() 和 $this->db->trans_complete() 兩個方法

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete();
           

在 start 和 complete 之間,你可以運作任意多個查詢,根據查詢執行 成功或失敗,系統将自動送出或復原。

二、錯誤處理

如果你的資料庫配置檔案 config/database.php 中啟用了錯誤報告(db_debug = TRUE), 當送出沒有成功時,你會看到一條标準的錯誤資訊。如果沒有啟用錯誤報告, 你可以像下面這樣來管理你的錯誤:

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->trans_complete();

if ($this->db->trans_status() === FALSE)
{
    // generate an error... or use the log_message() function to log your error
}
           

三、手工運作事務

$this->db->trans_begin();

$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');

if ($this->db->trans_status() === FALSE)
{
    $this->db->trans_rollback();
}
else
{
    $this->db->trans_commit();
}
           

手動運作事務時,請務必使用 $this->db->trans_begin() 方法, 而不是 $this->db->trans_start() 方法。