sql >> データベース >  >> RDS >> Mysql

Codeigniterトランザクション

    transactionsの使用 データを安全に挿入するためのサポートデータベースを意味します。したがって、Codeigniterでは、すべてのデータベース関連関数をモデルに記述します。 コントローラにはありません。 。そして、2番目のコード(機能していません)では、そこにモデルを指定しています。( utils )。とても単純なので、これはうまくいかないと確信しています。モデルとコントローラーが並列の挿入データではないためです。トランザクションはモデルにコーディングする必要があります(回答にモデルを書き込みます

    これもロードする

    1. データベースライブラリ
    2. モデルクラス
    3. URLヘルパー
    4. セッション

    前提条件

    コードで$dataを使用しました および$test 配列として。したがって、データを挿入および更新するための配列が2つあると仮定します。

    データセット

    $data = array(
       'title' => 'My title' ,
       'name' => 'My Name' ,
       'date' => 'My date'
    );
    
    $id = 007;
    $test = array(
       'title' => $title,
       'name' => $name,
       'date' => $date
    );
    

    あなたのコード

    $this->db->trans_start(); # Starting Transaction
    $this->db->trans_strict(FALSE); # See Note 01. If you wish can remove as well 
    
    $this->db->insert('table_name', $data); # Inserting data
    
    # Updating data
    $this->db->where('id', $id);
    $this->db->update('table_name', $test); 
    
    $this->db->trans_complete(); # Completing transaction
    
    /*Optional*/
    
    if ($this->db->trans_status() === FALSE) {
        # Something went wrong.
        $this->db->trans_rollback();
        return FALSE;
    } 
    else {
        # Everything is Perfect. 
        # Committing data to the database.
        $this->db->trans_commit();
        return TRUE;
    }
    

    メモ

    1. デフォルトでは、Codeigniterはすべてのトランザクションを厳密モードで実行します。 厳密モードが有効の場合 、トランザクションの複数のグループを実行している場合、1つのグループが失敗すると、すべてのグループがロールバックされます。 Ifstrictモードが無効 、各グループは独立して扱われますあるグループの失敗が他のグループに影響を与えないことを意味します


    1. SQLデータ定義言語

    2. 集計関数のないTSQLピボット

    3. SQL、Postgres OID、それらは何であり、なぜそれらは有用ですか?

    4. PostgreSQLの時間値に時間を追加する