列定义与群集列定义不兼容

时间:2016-11-08 01:43:59

标签: oracle query-optimization

我在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 个答案:

答案 0 :(得分: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-nd,每件事都可以。

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

如果您将cast添加到select中。执行也是正确的。

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