我创建了一个集群
create cluster abc_clus (abc_key int) ;
然后基于该集群创建索引
create index abc_clus_idx on cluster abc_clus;
我尝试在这4个表上添加此集群以进行 复杂的 连接
create table number1 ( dateofbirth date, Time timestamp(0), IDnumber int not null, class varchar(7) not null, primary key (dateofbirth, Time, class)) cluster abc_clus(class);
和
create table number2( tutornumber int not null, forename varchar2(20) not null, constraint number2 primary key (tutornumber)) cluster abc_clus(tutornumber);
create table number3 ( constraint number3 primary key (Roomnumber), Roomnumber int not null, xyz varchar(20)) cluster abc_clus(Roomnumber3);
create table number4 ( constraint class_pk primary key (classnumber), classnumber int not null) cluster abc_clus(classnumber);
但是,当我尝试此操作时,出现以下错误:
ORA-01753:列定义与集群列定义不兼容
我想知道将正确的方法添加到组合键上的群集:名字,姓氏,地址。
我正在使用SQL plus。
谢谢
表列必须与集群列具有相同的数据类型。在您的示例中,这可以正常工作:
create table test1 ( id int ) cluster abc_clus(id); Table TEST1 created.
如果数据类型匹配,那么即使复合键也可以使用:
create table test2 ( a int, b int, primary key(a, b) ) cluster abc_clus(a); Table TEST2 created.
但是,如果数据类型不同,则会收到错误消息:
create table test3 ( vc varchar2(7) ) cluster abc_clus(vc); ORA-01753: column definition incompatible with clustered column definition
并且数据类型必须完全相同,甚至int并且number不兼容:
int
number
create table test4 ( n NUMBER ) cluster abc_clus(n); ORA-01753: column definition incompatible with clustered column definition
编辑:
您甚至可以拥有复合集群:
创建集群idc_clus(i int,d date);
在集群idc_clus上创建索引idc_clus_idx;
创建表test5(i int,d date,主键(i,d))集群idc_clus(i,d);