2

Windows/NET/ODBC

データアダプターを介して確認できる便利な方法でクエリ結果を新しいテーブルに取得したいのですが、それを行う方法が見つかりません。
これについて初心者のレベルを満足させる例はあまりありません。
一時的かどうかはわかりませんが、結果を確認した後、テーブルはもう必要ないので、「手動で」削除するか、自動的に削除できます。

これは私が試すものです:

  mCmd = New OdbcCommand("CREATE TEMP TABLE temp1 ON COMMIT DROP AS " & _
  "SELECT dtbl_id, name, mystr, myint, myouble FROM " & myTable & " " & _
  "WHERE myFlag='1' ORDER BY dtbl_id", mCon)

  n = mCmd.ExecuteNonQuery

この実行はエラーなしで、「n」で正しい数の一致した行が得られます!!

しかし、pgAdminを使用すると、それらのテーブルがどこにも表示されません?? 開いたトランザクションの下を見ても、トランザクションを閉じた後でも。
2 つ目は、最初に temp1 テーブルの列を定義するか、クエリ結果に基づいて自動的に作成できるかどうかです (それはいいことです!)。

クエリ結果で満たされた新しいテーブルを取得するために上位コードに基づいて何をすべきかを説明する最小限の例を示してください。

4

1 に答える 1

3

現在のコードと同じことを行うより短い方法は、CREATE TEMPORARY TABLE AS SELECT .... マニュアルの のエントリをCREATE TABLE AS参照してください。

一時テーブルは、それらを作成したセッション (「接続」) の外では見えません。これらは、セッションが後のクエリで使用するデータの一時的な場所として意図されています。作成したテーブルに他のセッションからアクセスできるようにする場合は、TEMPORARYテーブルを使用しないでください。

UNLOGGED生成されたデータで、永続的である必要はないが、他のセッションから見える必要があるデータ (9.2 以降) が必要な場合がありますか?

関連参照: PostgreSQL で他のセッションの一時テーブルにアクセスする方法はありますか?

于 2012-12-24T09:34:36.967 に答える