Forums: Open Discussion (Thread #23945)

【バッチFW】単一トランザクションモデルにおけるテーブルのTRUNCATEについて (2009-09-15 17:25 by Anonymous #45913)

お世話になります。
質問なのですが、
単一トランザクションモデルを採用し、
・ジョブ前処理でTABLE1をTRUNCATEする。
・ビジネスロジックでTABLE1へデータのインサートをおこなう。
この場合、一瞬でTABLE1のレコード数が0になることは有り得るのでしょうか?
現在作成しているプログラムではそのような動きをしてしまいます。
単一トランザクションということで、上記動作のプログラムではレコード数が0になることは
ないという認識でおりましたがこれは間違いでしょうか?

Reply to #45913×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: 【バッチFW】単一トランザクションモデルにおけるテーブルのTRUNCATEについて (2009-09-15 17:28 by Anonymous #45914)

すみません。上記質問において文章のおかしな部分がございました。
6・7行目は
この場合、一瞬でもTABLE1のレコード数が0になることは有り得るのでしょうか?
現在作成しているプログラムでは一旦TRUNCATEされたテーブルが反映されているのか、SELECTでレコード件数が0になる瞬間があります。

に訂正します。
Reply to #45913

Reply to #45914×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: 【バッチFW】単一トランザクションモデルにおけるテーブルのTRUNCATEについて (2009-09-15 18:12 by Anonymous #45918)

Oracleの場合には(他のDBの場合はわかりません)、TRUNCATEはDELETEのようなDML文ではなくてDDL文という扱いになっていて、発行すると即時にコミットされて反映されたと思います。検索するとそんな話題がたくさん出てきます。
Reply to #45914

Reply to #45918×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: 【バッチFW】単一トランザクションモデルにおけるテーブルのTRUNCATEについて (2009-09-16 10:39 by Anonymous #45932)

丁寧な回答ありがとうございました。
当方はPostgreSQLですが同じようなことだと思います。
※初歩的な質問で申し訳ございませんでした。でも助かりました。
PostgreSQLにおいて、データ更新よりも一旦TRUNCATEしてからインサートをかけた方が時間短縮が出来ると考えたのですが、常時見られる立場のテーブルにおいてはこの方法では問題があるようですね。
もう少し考えてみたいと思います。
Reply to #45913

Reply to #45932×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login