2010-04-20 6 views
0

Je suis nouveau dans les transactions en général, mais surtout avec CodeIgniter. J'utilise InnoDB et tout, mais mes transactions ne reculent pas quand je le veux. Voici mon code (légèrement simplifié). Je ne reçois aucun message d'erreur, mais il ne recule pas non plus. Il devrait revenir à ce dernier trans_rollback juste avant la validation. Mes modèles sont tous sur la base de données "dog", donc je pense que la transaction porterait sur les fonctions des modèles. Peut-être que vous ne pouvez pas utiliser des modèles comme celui-ci. Toute aide serait grandement appréciée! Merci!Transactions dans codeigniter avec plusieurs tables

Répondre

1

Peut-être, il est parce que vous connecté à l'aide dog_db de $ et faire reculer le non existant transaction booze_db de $

+0

Oui, c'est une faute de frappe, haha. Édité. – Ethan

2

Eh bien, je sais que ce post est antique, mais voici mes 2 cents? (Ou il est une faute de frappe?):

Je ne pense pas que cela:

if(!$this->descriptions->insert($new_description)) 

fonctionnera, provoquer la fonction d'insertion d'enregistrement actif CI retourne toujours TRUE (réussite ou non). Si vous utilisez le mode de débogage, CI s'arrête en cas d'erreur et envoie un message d'écran à l'utilisateur, mais la fonction d'insertion renvoie toujours la valeur TRUE.

Donc, si vous êtes prêt à contrôler les transactions "manualy" avec CI, vous devrez utiliser quelque chose comme ceci:

... 

$this->db->trans_begin(); 

$this->db->insert('FOO'); 

if ($this->db->trans_status() === FALSE){ 

    $this->db->trans_rollback(); 

}else{ 

    $this->db->trans_commit(); 

} 

Hope this helps quelqu'un ... quelque temps .... quelque part

Questions connexes