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 我看不到那些表在哪里?无论我是在打开的交易下还是在交易关闭后查看。
其次,我应该先为 temp1 表定义列,还是可以根据查询结果自动生成它们(那太好了!)。

请用最小的例子来说明我如何根据上面的代码来获取充满查询结果的新表。

4

1 回答 1

3

执行当前代码执行相同操作的更短方法是使用CREATE TEMPORARY TABLE AS SELECT .... 请参阅手册中的条目CREATE TABLE AS

临时表在创建它们的会话(“连接”)之外可见,它们旨在作为会话将在以后的查询中使用的数据的临时位置。如果您希望其他会话可以访问创建的表,请不要使用TEMPORARY表。

也许您想要UNLOGGED(9.2 或更高版本)生成不需要持久但必须对其他会话可见的数据?

参见相关:有没有办法在 PostgreSQL 中访问其他会话的临时表?

于 2012-12-24T09:34:36.967 回答