MySQL 学習トランザクション制御

coldplay.xixi
リリース: 2021-04-07 09:32:19
転載
2754 人が閲覧しました

MySQL 学習トランザクション制御

#トランザクション制御とは

トランザクションとは、論理的な作業単位として実行される一連の操作を指します。これらの操作は

すべて成功する すべて失敗する かのどちらかです。トランザクションにより、複数のデータ変更が 1 つの単位として処理されることが保証されます。

    MySQL では、
  • Innodb ストレージ エンジンを使用するデータベースまたはテーブルのみがトランザクションをサポートします。
  • トランザクションは、データベースの整合性を維持し、バッチを保証するために使用されます。すべての SQL ステートメントが実行されるか、まったく実行されない
  • トランザクションは、
  • INSERTUPDATE、および DELETE ステートメントの管理に使用されます

Zhang San が ATM 機で Li Si に 100 元を送金すると、銀行の業務システムで 2 段階のデータ変更操作が実行されます:

  1. Zhang San の口座から 100 元を引きます
  2. Li Si の口座に 100 元を追加します

もしこの操作が行われたらどうなるかを尋ねます操作 1 は正常に実行されましたが、操作 2 は失敗しましたか?

関連する無料学習の推奨事項: mysql ビデオ チュートリアル

トランザクションの 4 つの特徴

データベースがトランザクションをサポートする場合、データベースは

ACID の 4 つの特性、つまり Atomicity (原子性)、Consistency (一貫性)、Isolation (分離)、Durability を備えている必要があります。

    原子性: トランザクションはアトミックな作業単位である必要があります。トランザクションに含まれる各操作が実行されるか、どの操作も実行されない必要があります。
  • 一貫性: トランザクションが実行されるときすべてのデータは一貫性を維持します。
  • 分離: トランザクションは独立して実行されます。複数のトランザクションは互いに分離されており、相互に干渉しません。トランザクションを 100% 分離すると速度が犠牲になります
  • 永続性: トランザクションの実行完了後、システムへの影響は永続的です

MySQL トランザクション制御

デフォルト では、MySQL は自動的に トランザクションを送信します。つまり、INSERT、UPDATE、および DELETE の各 SQL ステートメントは、送信後すぐに COMMIT 操作を実行します。したがって、トランザクションを開始するには、starttransaction または begin を使用するか、autocommit の値を 0.## に設定します。

#方法 1:
  • MySQL 学習トランザクション制御方法 2:
  • MySQL 学習トランザクション制御

データベースにログインし、学生データベースを使用して、すべてのデータ テーブルを表示します。
  1. USE student;SHOW TABLES;
    ログイン後にコピー

2. Bank_account データ テーブルを作成し、2 つのレコードを挿入し、Zhang San の残高フィールド値を 1000# に設定します。 ##

CREATE TABLE bank_account(
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) COMMENT '姓名',
	balance DECIMAL(18, 2) COMMENT '账户余额');INSERT INTO bank_account(id, name, balance) VALUE(1, '张三', 0);INSERT INTO bank_account(id, name, balance) VALUE(2, '李四', 0);UPDATE bank_account SET balance = balance + 1000 WHERE id = 1;
ログイン後にコピー
MySQL 学習トランザクション制御
3. デフォルトの自動コミット値を表示します

SELECT @@autocommit;
ログイン後にコピー
MySQL 学習トランザクション制御
4. Bank_account データ テーブル内のすべてのレコードを表示します

SELECT * FROM bank_account;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
MySQL 学習トランザクション制御
5. トランザクション制御を開始し、2 つの SQL ステートメントを実行します

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;COMMIT;
ログイン後にコピー
MySQL 学習トランザクション制御
6. この時点のデータ テーブルの内容を表示します

SELECT * FROM bank_account;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
MySQL 学習トランザクション制御
7. 再びトランザクション制御を開始し、同じ 2 つの SQL ステートメントを挿入しますが、コミットをロールバックに変更します。

START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;ROLLBACK;
ログイン後にコピー
MySQL 学習トランザクション制御
8. データ テーブルの内容を再度確認し、ロールバックを見つけます。その後のデータの変更

SELECT * FROM bank_account;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
MySQL 学習トランザクション制御
注: この記事はブロガーの MySQL 学習の要約であり、商用利用はサポートされていません。転載する場合は出典を明記してください。 MySQL の学習にある程度の興味と理解がある場合は、いつでもブロガーとコミュニケーションを取ることを歓迎します~

MySQL 学習トランザクション制御

その他の関連する無料学習の推奨事項:

mysql チュートリアル (ビデオ)

以上がMySQL 学習トランザクション制御の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート