基礎 トランザクションは、SQL ステートメントのグループに対するアトミック操作です。つまり、グループ内の SQL ステートメントの 1 つでエラーが発生した場合、同じグループ内の他の SQL ステートメントは実行されません。 テストとして使用できます。一連の SQL ステートメントを実行した後、結果が正しいかどうかを確認できます。正しい場合は、送信を選択できます。正しくない場合は、ロールバックして元の状態に戻すことができます。 MySQL では、すべての操作はデフォルトで自動的にコミットされ、トランザクションが開始されると手動でコミットされます。 基本的な使い方 別途開く 単一のオープンとは、SQL ステートメントのグループに対してトランザクションを開くことを意味します。 テーブルユーザーの作成( id INT UNSIGNED AUTO_INCREMENT 主キー、 名前 CHAR(12) NOT NULL, バランス INT UNSIGNED ); -- ユーザーテーブルを作成する INSERT INTO user(name,balance) VALUES (「ユンヤ」1000年) ("Ken",500); -- データを挿入します start transaction; -- トランザクションを開始します。すべての追加、削除、および変更操作は手動で送信する必要があります UPDATE user SET balance = 500 WHERE name = "Yunya"; -- Yunya は Ken に 500 を送金します UPDATE user SET balance = 1000 WHERE name = "Ken"; SELECT * FROM user; -- エラーがあるかどうかを確認します COMMIT; -- トランザクションをコミットします: 上記の2つのUPDATEを手動でコミットします -- ROLLBACK; -- トランザクションのロールバック: 転送量が正しくない場合は、ロールバック BEGIN を使用します -- トランザクションを閉じると、すべての追加、削除、変更操作が自動的にコミットされます グローバルに有効化 すべての SQL ステートメントがトランザクション操作を使用する場合は、SET AUTOCOMMIT=0 で自動送信をオフにしてトランザクション メカニズムを有効にし、すべてのステートメントがトランザクション タイプになるようにすることができます。 -- 自動コミットをオフにする SET AUTOCOMMIT = 0; ユーザー(名前、残高)に値を挿入 (「ジャック」、8000) 専念; -- 自動コミットを有効にする SET AUTOCOMMIT = 1; トランザクション分離 同時実行の問題 同時実行性の高いアクセスで複数のトランザクションの分離の問題が発生すると、次のようなことが起こる可能性があります。 ダーティ リード: トランザクション A がトランザクション B によって更新されたデータを読み取り、その後 B が操作をロールバックします。この場合、A によって読み取られたデータはダーティ データです。非反復読み取り: トランザクション A が同じデータを複数回読み取ります。トランザクション A がデータを複数回読み取るプロセス中に、トランザクション B がデータを更新してコミットするため、トランザクション A が同じデータを複数回読み取ると、結果が不一致になります。 分離レベル システムのデフォルトの分離レベルはレベル 3 であり、ファントム リードが発生する可能性があります。
クエリ設定 クエリ分離レベル @@tx_isolation を選択します。 分離レベルの設定 set session トランザクション分離レベル read uncommitted; -- set session は現在のセッションに対してのみ有効で、set global はグローバルに有効です。 上記は、MySQL がトランザクションを使用する方法の詳細です。MySQL トランザクションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Vueはechartを使用してラベルと色をカスタマイズします
シングルページアプリケーションを開発する場合、特定のルートを入力し、パラメータに基づいてサーバーから...
今日、小さなプログラムを書いていたときに、スクロールビューを使用したのですが、スクロールビュー内のテ...
Linux の操作と構成作業では、デュアル ネットワーク カードのバインディングがよく使用されます。...
<div class="box"> <画像 /> &l...
バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...
目次HTML構造の定義入力タグのバインディング属性入力タグはキーダウンイベントをリッスンしますli ...
序文今日はちょっとしたデモを書きました。左右にスワイプするロジックに関わる部分があります。当初はプラ...
コードをコピーコードは次のとおりです。 <a href=# title="ここに表示...
CSS3 の角丸や影の効果を使ったページを作りたいのですが、IE ブラウザでは対応していません。こ...
MySQL をクリーンアンインストールします。個人的にテストしたところ、今回はようやくうまくいきま...
Web フロントエンド開発に含まれる内容は、主に W3C 標準の構造、動作、パフォーマンスです。では...
序文コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるとき...
序文:この記事では、Ant Design Proログイン機能にグラフィック検証コードコンポーネントを...
最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...
コンテンツ プロパティは CSS 2.1 で導入され、:before および :after 疑似要素...