Bonjour,
j'ai pas tous compris sur les transactions avec PDO.
je souhaite géré des données selon des arborescences par intervalles et pour cela je voudrai le gérer avec pdo sur mysql.
ci-dessous une des méthodes de ma classe gérant les requetes sql et "Db" est une classe singleton contenant la classe PDO
les méthodes étant explicite je détaille pas
le bout de code sert pour l'insertion d'une feuille dans l'arbre, je décale les bornes avant l'insertion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public function update_limit_up($right_limit){ $db = Db::connect(); $db->beginTransaction(); $input[] = $right_limit; $query = " UPDATE ".$this->_table. " SET `right_limit` = right_limit + 2" . " WHERE `right_limit` > ?"; $result = $db->Execute($query, $input); if(!$result) return false; $query = " UPDATE ".$this->_table. " SET `left_limit` = left_limit + 2" . " WHERE `left_limit` > ?"; $result = $db->Execute($query, $input); $result = $db->commit(); if(!$result) return false; return true; }
questions:
1) je suis pas sure que mysql supporte ce type de transaction?
2) si 2 actions sur ma méthode arrive en même temps cela risque d'être le bordel ou bien justement l'utilisation du commit après coup résolve ce problème. en effet si j'ai pas mal de ligne dans la table j'ai peur que les 2 requêtes s'exécute en parallèles.
3) en cas d'incompatibilité avec mysql, comment je peux changer le delemiter de mysql avec PDO pour gérer cela avec des procédures stockées car mon hébergeur ne le permet pas sur phpmyadmin la version étant ancienne.
j'espère avoir été claire dans mes questions.
Partager