Mysqlトランザクション

2609 ワード

MysqlではMyISAMストレージエンジンはトランザクションをサポートしていません.InnoDBとBDはトランザクションをサポートしていません.
 
トランザクションは連続したデータベース・オペレーションのセットであり、このオペレーションは分割できません.つまり、このオペレーションはすべて実行に成功するか、すべて実行に失敗するか(実際には実行されません).
トランザクションには、通常、以下の4つの標準プロパティの略称ACIDがあります.
原子間性:作業ユニット内のすべての操作が正常に完了したことを確認します.そうしないと、トランザクションは障害点で中止され、以前の操作は以前の状態に戻ります.
≪コンシステンシ|Consistency|emdw≫:データベースがステータスを正しく変更した後に正常にコミットされたトランザクションを確認します.
独立性:トランザクション・オペレーションを互いに独立して透明にします.
≪永続性|Persistence|emdw≫:コミットされたトランザクションの結果または効果のシステムに障害が発生した場合でも、まだ存在することを確認します.
 
MYSQLのトランザクションには主に2つの方法があります.1、begin、rollback、commitでbeginが1つのトランザクションrollbackトランザクションロールバックcommitトランザクション確認2を実現し、直接setでmysqlの自動コミットモードを変更するMYSQLのデフォルトは自動コミットで、つまりQUERYをコミットして、それは直接実行します!set autocommit=0でset autocommit=1の自動コミットを禁止することで、トランザクションの処理を実現できます.しかし、set autocommit=0を使用すると、後ですべてのSQLがトランザクションとして処理され、commitで確認したりrollbackで終了するまで、このトランザクションを終了すると同時に新しいトランザクションが開かれることに注意してください.最初の方法で現在のトランザクションのみを1つのトランザクションとして使用します.
 
もう一度:
まずinnodbテーブルを新規作成します
create table test(
id int(9)
)ENGINE=INNODB;

操作:
begin;
insert into test value(1);
insert into test value(2);
commit;

テストしてみる
begin;
insert into test value(3);
select * from test;
(      3);
rollback;
select * from test;
(      3);