MySQLでトランザクションを開始する方法:BEGINステートメントの使い方
MySQLでは、START TRANSACTIONステートメント以外にも、BEGINステートメントを使用して新しいトランザクションを開始することができます。BEGINはSTART TRANSACTIONと完全に同じ動作をする、別名(シノニム)のステートメントです。
使用例
以下の例では、BEGINステートメントを使ってトランザクションを開始し、2つのINSERT文を実行した後、ROLLBACKで変更を取り消しています。
mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, 'Harshit','History',48); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)
処理の流れ
この例では、START TRANSACTIONではなくBEGINステートメントによってトランザクションが開始されています。その後、2つのINSERT文が実行され、最後にROLLBACK文が実行されます。ROLLBACKにより、データベースに対して行われた変更はすべて元に戻されます。
実際に以下のようにテーブルを確認すると、新しいデータが挿入されていないことがわかります。
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)
まとめ
- BEGINとSTART TRANSACTIONはどちらもトランザクションを開始するためのステートメントであり、機能的に同等です。
- ROLLBACKを実行すると、トランザクション開始以降に行われたすべての変更が取り消されます。
- 変更を確定したい場合は、代わりにCOMMIT文を使用します。
-
JavaScriptの「for...in」ステートメントとは?オブジェクトのプロパティをループ処理する方法を解説
JavaScriptのfor...in文は、オブジェクトが持つすべてのプロパティ(列挙可能なプロパティ)を順番に取り出して処理するためのループ構文です。オブジェクト内の各キー(プロパティ名)にアクセスしながら、対応する値を取得したい場合に非常に便利です。for...inの基本的な構文for (let 変数名 in オブジェクト) { // 各プロパティに対して実行したい処理 }ループ変数には、各反復ごとにオブジェクトのプロパティ名(キー)が文字列として代入されます。値そのものを取得するには、「オブジェクト[変数名]」のようにブラケット記法を使ってアクセスします。サンプルコード以下は、for
-
Macユーザー必見!Photoshop以外で使えるGIMP代替フォトエディタ5選
この記事を読んでいるということは、人気のオープンソース画像編集ソフト「GIMP」をすでに試したことがあるかもしれません。GIMPは機能が豊富で使いやすく、写真の微調整からゼロからのアートワーク作成まで、さまざまなツールと機能を備えています。ほとんどの画像編集ニーズに対応できる強力なソフトですが、より快適かつスピーディーに作業したいなら、Mac向けのGIMP代替アプリを検討する価値があります。 GIMPから乗り換えるべき理由とは? 多くのユーザーがGIMPを使用していて感じる、よくある不満点をまとめました。 複数レイヤーを同時に選択できない 変更の反映が遅い 編集可能なテキストにエフェクトを追