Maison > cadre php > PensezPHP > Opérations de transaction dans ThinkPHP5

Opérations de transaction dans ThinkPHP5

silencement
Libérer: 2020-01-30 22:49:41
avant
4867 Les gens l'ont consulté

Opérations de transaction dans ThinkPHP5

Si vous utilisez le traitement des transactions, le moteur de base de données doit prendre en charge le traitement des transactions. Par exemple, MyISAM de MySQL ne prend pas en charge le traitement des transactions et nécessite l'utilisation du moteur InnoDB.

ThinkPHP5.0

Utilisez la méthode de transaction pour exécuter les transactions de base de données Lorsqu'une exception se produit, elle sera automatiquement annulée, par exemple :

.

Contrôler automatiquement les transactions La gestion de

Db::transaction(function(){
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});
Copier après la connexion

peut également contrôler manuellement les transactions, par exemple :

// 启动事务Db::startTrans();try{
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();    } catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}
Copier après la connexion

ThinkPHP5.1

Le moyen le plus simple est d'utiliser la méthode de transaction pour fonctionner transactions de la base de données. Lorsque le code dans la fermeture Une exception sera automatiquement annulée, par exemple :

Db::transaction(function () {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});
Copier après la connexion

Vous pouvez également contrôler manuellement la transaction, par exemple :

// 启动事务Db::startTrans();try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}
Copier après la connexion

Notez que lors des opérations de transaction , assurez-vous d'utiliser la même connexion à la base de données.

À partir de la version V5.1.13+, la transaction XA de MySQL peut être prise en charge pour implémenter des transactions globales (distribuées). Vous pouvez utiliser :

Db::transactionXa(function () {
    Db::connect('db1')->table('think_user')->delete(1);
    Db::connect('db2')->table('think_user')->delete(1);}, [Db::connect('db1'),Db::connect('db2')]);
Copier après la connexion

Assurez-vous que votre moteur de table de données est InnoDB et activez. Prise en charge des transactions XA.

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!

Étiquettes associées:
source:www.liqingbo.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal