Les opérations de transaction peuvent être un peu inconnues pour de nombreux nouveaux arrivants. Même après avoir lu la partie sur les opérations de transaction du manuel officiel de ThinkPHP6, ils ne la comprennent toujours pas. Ensuite, je vais vous présenter les opérations de transaction.
1. Parlons d'abord des scénarios d'utilisation.
Supposons que je doive transférer 1 000 yuans à un ami. La logique commerciale normale est la suivante :
1. La banque déduit 1 000 yuans de mon compte
2. La banque a ajouté 1 000 yuans au compte de l'ami.
Si tout se passe bien, le transfert est réussi !
Ensuite, la question est la suivante : si je saisis accidentellement le mauvais compte bancaire et que la banque ne trouve pas le compte bancaire que j'ai saisi, mais que l'argent a été déduit de mon compte à ce moment-là, que dois-je faire ?
Nous disons souvent dans nos vies : « Si l'argent ne peut pas être transféré, la banque le restituera. » Voilà ce que cela signifie.
2. Définition de l'opération de transaction.
Ainsi, à travers l'exemple ci-dessus, nous comprenons ce qu'est une opération de transaction. Une transaction fait référence à un groupe logique d'opérations qui composent ce groupe d'opérations, soit toutes réussissent, soit toutes échouent.
Tout comme l'exemple de transfert d'argent ci-dessus, soit le transfert est réussi, sinon, je dois restituer mon argent, ce qui signifie revenir à l'état initial, également appelé « rollback ».
3. Opérations de transactions dans ThinkPHP6.
Nous comprenons les scénarios d'utilisation des opérations de transaction, alors comment les utiliser dans ThinkPHP6 ?
Db::transaction(function () { Db::table('think_user')->insert(['name'=>'aaa']); Db::table('think_user')->delete(1); });
En regardant l'exemple ci-dessus, l'opération de suppression ne sera effectuée que lorsque nous insérerons avec succès l'enregistrement. Si l'insertion échoue, l'opération de suppression ne sera pas effectuée.
Par exemple, si nous écrivons délibérément un mauvais nom de champ1, que le nom de champ1 n'existe pas dans la table de données et que le programme d'insertion ne sera pas exécuté avec succès, alors l'instruction de suppression suivante ne pose pas de problème, mais elle ne sera toujours pas exécuté.
De plus, nous pouvons également contrôler les transactions manuellement. Regardez le code suivant :
// 启动事务 Db::startTrans(); try { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); }
Ce qui précède est le contenu des opérations de transaction dans ThinkPHP6. En expliquant les exemples de notre vie réelle, tout le monde peut avoir une bonne compréhension des opérations de transaction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!