sql >> Databáze >  >> RDS >> Mysql

Transakce Codeigniter

Pomocí transactions prostředky podporují databáze pro bezpečné vkládání dat. Takže v Codeigniter zapisujeme všechny funkce související s databází v Modelu ne v ovladači. . A ve vašem druhém kódu (který nefunguje) máte namířený model. (utils ). Tak jednoduché, jsem si jistý, že to nebude fungovat. Protože nejde o vkládání dat s paralelním modelem a ovladačem. Transakce by měla být zakódována v modelu (ve své odpovědi napíšu model ).

Načtěte také tento materiál

  1. Knihovna databáze
  2. Modelová třída
  3. Pomocník adresy URL
  4. Relace

Předpoklady

Ve svém kódu jste použili $data a $test jako pole. Předpokládám tedy, že existují dvě pole pro vkládání a aktualizaci dat.

Vaše soubory dat

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

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

Váš kód

$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;
}

Poznámky

  1. Ve výchozím nastavení spouští Codeigniter všechny transakce v přísném režimu. Kdyžje povolen přísný režim , pokud spouštíte více skupin transakcí, pokud jedna skupina selže, všechny skupiny budou vráceny zpět. Režim Ifstrict je deaktivován , každá skupina je léčena nezávisle , to znamená, že selhání jedné skupiny neovlivní ostatní .


  1. Nejlepší skupiny na Facebooku pro Analytics, Big Data, Data Mining, Hadoop, NoSQL, Data Science

  2. Funkce zálohovací metody PostgreSQL v AWS S3

  3. Jak vypočítat rozdíl mezi dvěma časovými razítky v Oracle

  4. Jak nasadit produkční cluster MySQL nebo MariaDB Galera pomocí ClusterControl