如何在复合键上添加集群?
How do I add a cluster on a composite key?
我创建了一个集群
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: column definition incompatible with clustered column definition
我想知道在复合键上添加集群的正确方法:名字、姓氏、地址。
我正在使用 SQL plus。
谢谢
table 列需要与簇列具有相同的数据类型。在您的示例中,这工作正常:
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
也不兼容:
create table test4 (
n NUMBER
) cluster abc_clus(n);
ORA-01753: column definition incompatible with clustered column definition
编辑:
你甚至可以有复合集群:
创建集群idc_clus (
我知道,
日期
);
在集群 idc_clus 上创建索引 idc_clus_idx;
创建table test5 (
我知道,
日期,
主键 (i,d)
) 集群 idc_clus(i, d);
我创建了一个集群
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: column definition incompatible with clustered column definition
我想知道在复合键上添加集群的正确方法:名字、姓氏、地址。
我正在使用 SQL plus。
谢谢
table 列需要与簇列具有相同的数据类型。在您的示例中,这工作正常:
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
也不兼容:
create table test4 (
n NUMBER
) cluster abc_clus(n);
ORA-01753: column definition incompatible with clustered column definition
编辑:
你甚至可以有复合集群:
创建集群idc_clus ( 我知道, 日期 );
在集群 idc_clus 上创建索引 idc_clus_idx;
创建table test5 ( 我知道, 日期, 主键 (i,d) ) 集群 idc_clus(i, d);