2016-11-08 43 views
1

不相容我已經創建了一個集羣中的Oracle列定義與羣集列定義

CREATE CLUSTER myLovelyCluster (clust_id NUMBER(38,0)) 
SIZE 1024 SINGLE TABLE HASHKEYS 11; 

不是表爲集羣

CREATE TABLE Table_cluster 
CLUSTER myLovelyCluster (columnRandom) 
AS SELECT * FROM myTable ; 

的columnRandom被很好地定義爲NUMBER(38,0),但爲什麼我在假定列不兼容的情況下出現錯誤?

謝謝

+1

myLovelyCluster!= myCluster3。 –

+0

opps!對不起,我修復了這個問題,但問題仍然存在 – napi15

+0

當您CREATE TABLE my_table AS SELECT * FROM myTable時,聚類列的結果日期類型是什麼。 –

回答

2

您確定columnRandom是數字(38,0)?在oracle中NUMBER!= NUM​​BER(38,0)

讓我們創建兩個表。

create table src_table (a number); 
create table src_table2(a number(38,0)); 

select column_name,data_precision,Data_scale from user_tab_cols where table_name like 'SRC_TABLE%'; 

查詢結果是。列的定義是不同的。

+-------------+----------------+------------+ 
| Column_name | Data_Precision | Data_scale | 
+-------------+----------------+------------+ 
| A   |    |   | 
| A   |    38 |   0 | 
+-------------+----------------+------------+ 

如果我嘗試創建第一個表的集羣。

CREATE TABLE Table_cluster 
CLUSTER myLovelyCluster (a) 
AS SELECT * FROM src_table ; 

ORA-01753: column definition incompatible with clustered column definition

2擋每一件事情是確定的。

CREATE TABLE Table_cluster 
CLUSTER myLovelyCluster (a) 
AS SELECT * FROM src_table2 ; 

如果你添加到選擇。執行也是正確的。

CREATE TABLE Table_cluster CLUSTER myLovelyCluster (a) 
AS SELECT cast(a as number(38,0)) FROM src_table; 
+0

在oracle中NUMBER!= NUM​​BER(38,0)正確!此外,出於某種奇怪的原因,它與Integer一起工作,不知道爲什麼,但正如你在程序員生活中所知道的,只要有用,我們就不會問問題 – napi15

+0

For Integer答案很簡單。子類型INTEGER是NUMBER(38,0); –