ホームページ  >  記事  >  データベース  >  MySQL のトランザクション処理とは何ですか? (コード例)

MySQL のトランザクション処理とは何ですか? (コード例)

青灯夜游
青灯夜游転載
2018-11-13 15:57:372868ブラウズ

この記事の内容は、MySQL トランザクション処理とは何かを紹介することです。 (コード例)。困っている友人は参考にしていただければ幸いです。

#MySQL トランザクション処理

ステップ:

1. トランザクションの開始starttransaction

トランザクションを開始すると、すべての SQL 操作がメモリ内で実行されますが、データベース ディスク上のファイルへの実際のフィードバックはありません。

2. ロールバック rollback

ロールバックとは、トランザクションが開始される前の状態に戻すことです。

注: ロールバック操作によりトランザクションが自動的に閉じられます。トランザクションを再度実行したい場合は、トランザクションを再度開く必要があります。

3. 送信コミット

取引の基本原則デフォルトでは MySQL が SQL ステートメントの実行を自動的に送信するため、通常の実行はすぐに実行され、有効になります。したがって、トランザクションを開く本質は、以前の自動送信機能をオフにし、代わりにユーザーが手動で (commit ステートメントを使用して) 送信することです。 [関連ビデオチュートリアルの推奨事項:

MySQL チュートリアル

]

トランザクションの手順の概要:

1、トランザクションを開く

2、実行が成功した場合は、commit を送信します。

3、SQL ステートメントの実行に失敗した場合は、ロールバックします。

トランザクション処理の例:

最も一般的なトランザクション処理は、お金の借り入れと返済です。次は、Zhang San が Li Si に 1,000 元を返済する例です。 まず、データベース内のそれぞれの金額を確認します。

#以下は、リターン コード オブ マネー トランザクションの処理です:

<?php  

/**
* MySQL实现事务操作
*/

echo "<meta charset=utf-8>";

// 1 连接数据库
$link = @mysql_connect('localhost','root','') or die('连接数据库失败');
mysql_select_db('test',$link);
mysql_query('set names utf8');

// 2  开启事务
mysql_query("start transaction");
//设置一个变量,用来判断所有sql语句是否成功
$flag = true;

// 2.1执行事务中的一组sql语句 
   
// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

//张三的money-1000
$sql = "update pdo set money=money-1000 where name='张三'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

// 2.2 判断事务是否执行成功
if ($flag) {
    //所有sql语句执行成功,把sql语句提交
    mysql_query('commit');
    echo "还钱成功!";
}else{
    // 如其中一条执行失败,则回滚到事务开启之前的状态
    mysql_query('rollback');
    echo "还钱失败!";
}

結果:


以下では、フィールドの 1 つを意図的に書きます。間違っています。トランザクションが正常に処理されたかどうか、データベース内の金額が変化したかどうかを確認してください。

// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";  //把moeny字段错写成mone

結果:

MySQL のトランザクション処理とは何ですか? (コード例)

結果は、返済が失敗したことと、データベース内のそれぞれの金額です。は変更されていません。これは、特定のステートメントが正常に実行されなかった場合、トランザクションはコミットされず、トランザクションを開始する前のデータを元の状態に復元するためにロールバックされることを示します。これは、トランザクションを使用する役割でもあります。は、

トランザクション内のすべての SQL ステートメントが実行された場合のみです。トランザクションは成功した場合にのみコミットされ、成功しなかった場合はロールバックされます。

要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。

以上がMySQL のトランザクション処理とは何ですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。