2013-05-22 44 views
0

我在Postgres Sql中遇到了關於全局臨時表格的問題。如果兩個程序:Postgres Sql中的臨時表格

  1. A(),具有一個臨時表說臨時有一個臨時表(ID,姓名)
  2. B()說溫度(ID,姓名,地址)

然後如果首先調用過程A,並且在調用過程B之後,臨時表保持在過程A中定義的結構即temp(id,name),反之亦然,並且過程B中定義的列「address」不是找到。

請幫我找一個解決方案?

+0

所以你需要過程本地臨時表,以便A和B的臨時表對其他過程不可見? –

+0

我的意思是說,如果我們首先對A進行數據庫調用,那麼將使用列id和名稱創建臨時表。在那之後,如果我們對B進行數據庫調用,那麼在B中定義的臨時表不存在,它使用A中定義的臨時表與列id和名稱。找不到B的臨時表中定義的列地址。 – user2346047

+0

您希望程序共享相同的臨時表,但程序需要它具有不同的列?或者,如果其他人尚未創建它,您是否希望他們分享它,但創建它(使用不同的列)?這兩個對我來說都有點奇怪。 –

回答

1

如果您確實需要顯式臨時表,只需使用唯一的名稱創建這些臨時表即可。

無論如何,通常的做法是在沒有顯式臨時表的情況下在SQL選擇中處理它,可能通過使用與查詢(公用表表達式)進行擴展。

+0

有沒有其他的選擇? – user2346047

+0

不是我所知道的。三種選擇是不夠的:-)進一步描述你的用例。 – Beryllium

0

基本上你有兩種選擇。

第一個是讓你的表唯一,以便它們不會碰到相同的。如果您使用這些來存儲更長期的會話特定數據,則這將是首選。這些可以唯一命名。

第二個是,你可以創建,使用和刪除同一個存儲過程裏面你的表,以便存儲過程中的一般可以保證溫度的關係不存在啓動時,用存儲過程B.同樣