2017-05-02 8 views
0

私はPostgreSQLのトランザクションをMSSQLと比較して頭を内包しています。いくつかの更新コマンドをテストしてから、SELECTクエリをUPDATEコマンドの間に振りかざして、結果が期待どおりであることを確認して戻したいと思います。ここで私は何をしようとしているの単純化した例です。PostgreSQLトランザクション内のSELECTクエリはROLLBACKの場合でもデータをコミットします

BEGIN; 
UPDATE my_table SET int_column = 1 WHERE id = 1; 

-- i want to check that the column has been set to 1 
SELECT * FROM int_column WHERE id = 1; 

-- i want to rollback the updates while testing 
ROLLBACK; 

私に混乱して何がSELECTクエリがさえ最後のステートメントとしてROLLBACKで、更新をコミットしているように見えるということです。 SELECTを削除すると、ロールバックにより予期したとおりに更新が行われなくなりますが、実際には列が更新されます。私はMSSQLのSELECTクエリがこの問題なしでトランザクション内で使用できるので、ここで何かが欠けているはずです。

検索やPostgreSQL Transaction Documentationでこれに関する詳細が見つかりませんでした。

+0

どのSQLクライアントを使用していますか?自動コミットを有効にしましたか? –

+0

@a_horse_with_no_name私はPosticoと呼ばれるものを使用していますが、自動コミットを参照するオプションは見つかりません –

+0

「BEGIN ... ROLLBACK」トランザクションコントロールをサポートしていない可能性があります。あなたの例は 'psql'で正しく動作します –

答えて

0

私はPosticoの代わりにpsqlを使用しましたが、私の問題は解決しました。Posticoはこの機能をサポートしていないようです。

関連する問題