2016-01-22 183 views
1

是否可以在全局臨時表上創建索引?如果是,我們是否需要在一個會話中創建。在全局臨時表上創建索引

我試了下面的方法,最終以下面的問題。

會議1:

CREATE GLOBAL TEMPORARY TABLE "SFE_ADM"."DUMMY_GLO" 
    ( "C1" VARCHAR2(6 CHAR) 
    ) ON COMMIT PRESERVE ROWS ; 

CREATE INDEX DUMMY_GLO_IDX ON DUMMY_GLO (C1) TABLESPACE SFE_I1; 

會議1:

CREATE GLOBAL TEMPORARY TABLE "SFE_ADM"."DUMMY_GLO" 
     ( "C1" VARCHAR2(6 CHAR) 
     ) ON COMMIT PRESERVE ROWS ; 

會話2:

CREATE INDEX DUMMY_GLO_IDX ON DUMMY_GLO (C1) TABLESPACE SFE_I1; 

會議1:

CREATE GLOBAL TEMPORARY TABLE "SFE_ADM"."DUMMY_GLO" 
     ( "C1" VARCHAR2(6 CHAR) 
     ) ON COMMIT PRESERVE ROWS ; 

Session 2:

TRUNCATE TABLE DUMMY_GLO 
CREATE INDEX DUMMY_GLO_IDX ON DUMMY_GLO (C1) TABLESPACE SFE_I1; 

對於上述所有嘗試,我收到了一條錯誤消息說。

getting an error while creating index for temporary table 
Error starting at line : 1 in command - 
CREATE INDEX DUMMY_GLO_IND ON DUMMY_GLO (C1) TABLESPACE SFE_I1 
Error at Command Line : 1 Column : 42 
Error report - 
SQL Error: ORA-14451: unsupported feature with temporary table 
14451. 00000 - "unsupported feature with temporary table" 
*Cause: An attempt was made to create an IOT, specify physical attributes, 
      specify partition or parallel clause. 
*Action: do not do that 

回答

4

是的,你可以在臨時表上創建索引,但你不能爲它指定表空間:

SQL> CREATE INDEX DUMMY_GLO_IDX ON DUMMY_GLO (C1); 

Index created. 

我不知道爲什麼你要使用不同的會話。全局臨時表及其索引只能創建一次,就像普通表一樣。然後許多會話可以一次使用該表,而不會看到彼此的數據。