MySQL Advanced Ten - トランザクションのアプリケーション

黄舟
リリース: 2016-12-29 16:47:39
オリジナル
958 人が閲覧しました

1. トランザクションテクノロジーを使用する必要があるのはなぜですか?現在、多くのソフトウェアはマルチユーザー、マルチコース、マルチスレッドになっており、データの一貫性を維持するために、同じテーブルを同時に使用することができます。

1. データベースがトランザクションをサポートしているかどうかを確認します (InnoDB がサポートしています)。

show engines;
ログイン後にコピー

2. mysql の現在のデフォルトのストレージ エンジンを確認しますか?

show variables like '%storage_engine%';
ログイン後にコピー

3. 特定のテーブルのストレージ エンジンを確認しますか?

show create table test;
ログイン後にコピー

4. テーブルのストレージ構造を変更しますか?

InnoDB テーブルの作成: Create table ... type=InnoDB;Alter table table_name type=InnoDB;

2. 例:

1. データベース銀行を作成します

create table account(  
aid int not null,  
accname varchar(20) not null,  
accmoney decimal(10,2) not null,  
primary key(aid))engine = innodb default charset = gbk;
ログイン後にコピー

2。 table

insert into account values(1,'A',4000);  
insert into account values(2,'B',2000);
ログイン後にコピー

3. テーブルのトランザクションを開きます

start transaction;
ログイン後にコピー

4. データをアクティブな送信に設定します

commit;  
set autocommit = 0;
ログイン後にコピー

6. 新しい MySQL コマンド ウィンドウを開き、アカウント テーブルを表示します

<pre name="code" class="sql">update account set accmoney = accmoney - 1000 where aid = 1;  
update account set accmoney = accmoney + 1000 where aid = 2;
ログイン後にコピー

上記の変更命令が変更され、データベースが変更命令を発行しなかったため、データが存在しないことがわかります

7. 元のウィンドウでクエリを実行すると、データが変更されたことがわかります

select * from account;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

8。 . 物理コミットを送信します

select * from account;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

9. 端末でデータを確認すると、データが変更されていることがわかります

3. トランザクションのロールバック

に戻ります。トランザクションが発生する前のデータの状態。ロールバックを通じて。

補足: コミットとチェーンとは、トランザクションが送信された後に新しいトランザクションが再度開かれることを意味します。

ロールバックとリリースとは、ロールバック後に顧客との接続を切断することを意味します。

2. 復元ポイント (インスタンス)

commit;
ログイン後にコピー

データベース情報を確認します
select * from account;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
set autocommit = 0;  
insert into account values(3,&#39;C&#39;,3000);  
savepoint a1;  
insert into account values(4,&#39;D&#39;,3000);  
savepoint a2;  
insert into account values(5,&#39;E&#39;,3000);  
savepoint a3;
ログイン後にコピー

次に、クエリステートメント

を実行すると、テーブルに新しく追加されたデータが表示されます。

4. トランザクションの概要

トランザクションには、

原子性、一貫性、分離性、耐久性の 4 つの属性が必要です。これら 4 つのプロパティは、多くの場合、ACID プロパティと呼ばれます。

原子性: トランザクションは分割できない作業単位であり、トランザクションに含まれるすべての操作は完了するか、何も行われません。

整合性: トランザクションは、データベースをある整合性状態から別の整合性状態に変更する必要があります。一貫性と原子性は密接に関係しています。

分離: トランザクションの実行は他のトランザクションによって干渉されません。つまり、トランザクションによって使用される内部操作とデータは他の同時トランザクションから分離され、同時に実行されるトランザクションは相互に干渉できません。

耐久性:耐久性も永久的になります。トランザクションがコミットされると、データベース内のデータに対する変更は永続的になるはずです。後続の操作や障害が影響を与えることはありません。

上記は MySQL Advanced Ten - トランザクション アプリケーションの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。



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