1. トランザクションテクノロジーを使用する必要があるのはなぜですか?現在、多くのソフトウェアはマルチユーザー、マルチコース、マルチスレッドになっており、データの一貫性を維持するために、同じテーブルを同時に使用することができます。
1. データベースがトランザクションをサポートしているかどうかを確認します (InnoDB がサポートしています)。
show engines;
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;
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;
3. トランザクションのロールバック
に戻ります。トランザクションが発生する前のデータの状態。ロールバックを通じて。
補足: コミットとチェーンとは、トランザクションが送信された後に新しいトランザクションが再度開かれることを意味します。
ロールバックとリリースとは、ロールバック後に顧客との接続を切断することを意味します。
2. 復元ポイント (インスタンス)
commit;
select * from account;
set autocommit = 0; insert into account values(3,'C',3000); savepoint a1; insert into account values(4,'D',3000); savepoint a2; insert into account values(5,'E',3000); savepoint a3;
4. トランザクションの概要
トランザクションには、
原子性、一貫性、分離性、耐久性の 4 つの属性が必要です。これら 4 つのプロパティは、多くの場合、ACID プロパティと呼ばれます。
原子性: トランザクションは分割できない作業単位であり、トランザクションに含まれるすべての操作は完了するか、何も行われません。
整合性: トランザクションは、データベースをある整合性状態から別の整合性状態に変更する必要があります。一貫性と原子性は密接に関係しています。
分離: トランザクションの実行は他のトランザクションによって干渉されません。つまり、トランザクションによって使用される内部操作とデータは他の同時トランザクションから分離され、同時に実行されるトランザクションは相互に干渉できません。
耐久性:耐久性も永久的になります。トランザクションがコミットされると、データベース内のデータに対する変更は永続的になるはずです。後続の操作や障害が影響を与えることはありません。
上記は MySQL Advanced Ten - トランザクション アプリケーションの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。