tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

Rails, PostgreSQL: rails console --sandboxを起動しているとき、DBはどうなっているか。

コンソールをサンドボックスモードで起動したとき、データベースへの操作がデータベース上で確認出来ないので調べてみました。

結論

  • サンドボックスモードではコンソールが一つの大きなトランザクションとして振る舞う。なのでコンソール内でしか作成したインサートをみることができない。  

  • コンソール以外の方法でデータベースに接続しているとき(pgAdminⅢなど)、 コンソールがやっていることはまだコミットされていないので、コンソール以外の接続からは隠されている。  

  • ある接続がトランザクションを使用してデータベースと対話しているときは、他のデータベースへの接続は、コミットがなされるまでどんなデータベースの変化も見ることができない。トランザクションを使用している接続(この場合サンドボックスモードのコンソール)だけが、 ロールバック前のデータベースの変化を見ることが出来る。

リンク:

引用元:

関連:

間違いがあれば、ご指摘下さると幸いです。