2016-11-08 85 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); –