0

pgsql db を構築し、JDBC を使用してデータを db にアップロードします。しかし、時々間違ったデータをアップロードします。pgsqlにはいくつかの機能がありますか、SQLステートメントはバックアップファイルを使用せずに最後のステップにロールバックできますか?

ありがとう、

4

1 に答える 1

1

トランザクションで何かを実行する場合、「commit」または「rollback」のいずれかでトランザクションを終了することができます。そのため、スクリプトでは、「これで問題ないようですか?」というインタラクティブな質問がユーザーに表示される可能性があります。その後、コミットまたはロールバックを実行します。

「トランザクションでのアイドル状態」が長時間続くとパフォーマンスに悪影響を与える可能性があるため、タイムアウト後にロールバック (またはコミット) する必要があることに注意してください。もちろん、DB操作を行う前にユーザーに質問する方が良いでしょう.

何かがすでにデータベースにコミットされている場合、私が知る限り、バックアップがない限りロールバックできません(わからない-おそらくWALに基づいてそれを行うことは理論的に可能ですが、おそらくそうではありません)。数年前、私は「ウォーム スタンバイ バックアップ サーバー」を備えたシステムを実装していましたが、これは常に運用データベースから 30 分遅れていました。その後、「遭難信号」を発行することができ、バックアップ サーバーは古い状態のデータベースでオンラインになりました。データベース、つまり、update users set password=md5('foo' || salt)代わりに のような間違いをした場合update users set password=md5('foo' || salt) where username='tobixen'。プライマリ データベースがダウンした場合、「ウォーム スタンバイ」がロール フォワードされてからオンラインになります。興味があれば、これに関する追加の詳細を投稿するかもしれません。

問題が発生することが予想される場合は、通常、データベースとスクリプトを手動で簡単にロールバックできるように設計することもできます。

于 2012-07-05T05:41:29.777 に答える