2013-05-08 64 views
0

我有一個要求,在我的查詢中不使用#tempTables,因爲將來我們不會對預期的數據庫有寫訪問權限。所以我用CTE替換了我的#tempTables。但我仍然懷疑它是否會在這種情況下發揮作用。我們是否需要WRITE訪問數據庫才能使用CTE(公用表表達式)

所以你可以告訴我,CTE是否需要WRITE訪問數據庫?

Please refer my earlier post for clarity

+1

您正在使用哪些DBMS? Postgres的?甲骨文? (雖然我懷疑是否有任何DBMS在使用CTE時需要寫訪問權限) – 2013-05-08 10:43:35

+0

@a_horse_with_no_name,是的Oracle – Jaikrat 2013-05-08 10:45:34

回答

3

不,CTE是一個簡單的SQL構造,可以讓你更多的權力和靈活性,在查詢

或者

號的CTE僅選擇的,因此沒有寫入權限是由需要:不隱含或顯式創建,不插入或更新

+0

好的,感謝您的快速回復:) – Jaikrat 2013-05-08 10:47:45

+0

嘿@gbn,有關在CTE上使用INDEXES的任何想法?如果是,那麼如何。我正在使用下面的代碼不工作。 ;具有CTE1如( \t SELECT COL1,COL2,從表 COL3) CTE2如( SELECT COL1,COL2,COL3,從otherTable COL4) 創建CTE1(COL1,COL2,COL3)指數index1之間 在CTE2(col1,col2,col3,col4)上創建索引PSIXNSRTTable 從CTE1中選擇{很多列},CTE2 因爲之前我在我的#tempTable上創建索引,只有少量列。 – Jaikrat 2013-05-08 11:06:20

+0

@Jai:你不能在CTE中創建索引。你必須使用基表索引 – gbn 2013-05-08 11:14:31

相關問題