See the Elephant

1992生まれのプログラマが書くエンジニアブログ

MySQLはtransaction中でもselectできる

本番DBへクエリを流す

手で本番DBにクエリを流すのは人生で初めてだった。

これまではmigrateツールがよしなにやってくれていたので、あんまりそんな機会がなかった。

migrationツールがないチームに異動して初の体験。

mysqlでtransactionを使った

今日、業務中に何気なく transactionを初めて使った。

> begin;
> update ...
> commit;

トランザクションを開始するとcommitを適用するまでは操作がデータベースに適用されない。

当たり前だよね。

rollback; を実行すれば、操作はなかったことになる。

トランザクション中のselectは結果を反映している

実はこの時、トランザクション中にselectを叩くと、操作が反映された状態のテーブルにクエリがかかる。

なので、commit; 前に操作結果を反映した状態のテーブルを見ることができる。

当然、まだ本物のテーブルには操作が反映されていないので仮想的なテーブルに対してクエリしているんだろう。

何気に知らなかったのでメモっておこう