我從來沒有使用全球臨時表,但我有一些問題,他們將如何在PHP環境中工作。Oracle全球臨時表/ PHP交互問題
數據共享如何:假設通過php使用oci8持久連接到oracle。數據是否與數據庫ID綁定?它是基於Apache httpd惡魔完成的嗎?或者每個獨立請求都是獨特的?
何時從全局臨時表中清除會話的數據?我假設(或者希望)它在php腳本退出時完成了。或者,如果沒有,我假設我需要在腳本退出前將其刪除。
我從來沒有使用全球臨時表,但我有一些問題,他們將如何在PHP環境中工作。Oracle全球臨時表/ PHP交互問題
數據共享如何:假設通過php使用oci8持久連接到oracle。數據是否與數據庫ID綁定?它是基於Apache httpd惡魔完成的嗎?或者每個獨立請求都是獨特的?
何時從全局臨時表中清除會話的數據?我假設(或者希望)它在php腳本退出時完成了。或者,如果沒有,我假設我需要在腳本退出前將其刪除。
全局臨時表只是表結構(名稱,列名,列數據類型等)的邏輯定義。當會話通過插入數據來引用它時,會在臨時表空間中創建一個數據段以僅保存該會話的數據。因此,不同的會話可以引用相同的邏輯表定義,因爲它們各自具有自己的專用數據段,可以在提交時或會話斷開時輕鬆清除,而不會影響其他會話。
GTT中的數據清除可以在提交時或會話結束時進行,具體取決於創建它的選項。無論哪種情況,在斷開連接之前,您都不必親自清理自己。
GTT的一個有用的替代方法是子查詢分解子句(「WITH」),您可以在其中創建多個可以引用之前在該SQL語句中聲明的關係的關係。這些可以物化爲臨時表空間中的一個數據段,當它們超過特定的內存使用量時由Oracle自動執行,或通過使用MATERIALIZE優化器提示手動執行。
如果我沒有記錯,全局臨時表中的數據只能從一個活動會話中獲得,並且只能用於該活動會話(我的意思是session = connection)。因此,您只能看到活動會話中之前插入的數據。因此,我相信,這些數據在閉幕會議後被清除。不管你使用哪種語言。
至少我是這麼認爲的。 :d
正如在這裏寫: http://www.oracle-base.com/articles/8i/TemporaryTables.php
的數據在全局臨時表是私有的,這樣由會話插入的數據只能由會話訪問。
臨時表中的數據在數據庫會話結束時自動刪除,即使它異常結束。
對不起,我的英語不好。