Sql 如何在具有不同数据类型的组合键上添加集群?
我有几个表,我想集群然而,我已经归结到这个表的问题。以下是我创建集群的方式:Sql 如何在具有不同数据类型的组合键上添加集群?,sql,oracle,indexing,sqlplus,composite-key,Sql,Oracle,Indexing,Sqlplus,Composite Key,我有几个表,我想集群然而,我已经归结到这个表的问题。以下是我创建集群的方式: create cluster xyz_clus (xyz_key int, date1 date, time timestamp ); 我是这样添加索引的: create index xyz_clus_idx on cluster xyz_clus; 这是我做的桌子: create table ABC ( PRIMARY KEY (date1, time, number1), date1
create cluster xyz_clus
(xyz_key int,
date1 date,
time timestamp
);
我是这样添加索引的:
create index xyz_clus_idx on cluster xyz_clus;
这是我做的桌子:
create table ABC
(
PRIMARY KEY (date1, time, number1),
date1 date,
time timestamp(0),
number1 int not null,
classnumber varchar(7) not null,
constraint timeslot_classnumber_fk Foreign Key (classnumber) references class (classnumber)
)
cluster xyz_clus(date1, time, number1);
然而,无论我怎么努力,我总是不断地收到这个错误
ORA-01753: column definition incompatible with clustered column definition
正如我在你的文章中解释的,datatypea需要精确匹配。以下代码起作用:
CREATE TABLE abc (
date1 DATE,
time TIMESTAMP,
number1 INT NOT NULL,
classnumber VARCHAR2(7) NOT NULL,
PRIMARY KEY (date1, time, number1),
CONSTRAINT timeslot_classnumber_fk FOREIGN KEY (classnumber)
REFERENCES CLASS (classnumber)
) CLUSTER xyz_clus(number1, date1, time);
Table ABC created
但是,这会导致错误,因为它在表中使用时间戳(0)
,在集群中使用时间戳
:
CREATE TABLE abc (
date1 DATE,
time TIMESTAMP(0),
number1 INT NOT NULL,
classnumber VARCHAR2(7) NOT NULL,
PRIMARY KEY (date1, time, number1),
CONSTRAINT timeslot_classnumber_fk FOREIGN KEY (classnumber)
REFERENCES CLASS (classnumber)
) CLUSTER xyz_clus(number1, date1, time);
ORA-01753: column definition incompatible with clustered column definition
同样,组合键中列的顺序也很重要。以下查询具有正确的时间戳
,但表中列的顺序为日期、时间戳、INT
,在集群中为INT、日期、时间戳
:
CREATE TABLE abc (
date1 DATE,
time TIMESTAMP,
number1 INT NOT NULL,
classnumber VARCHAR2(7) NOT NULL,
PRIMARY KEY (date1, time, number1),
CONSTRAINT timeslot_classnumber_fk FOREIGN KEY (classnumber)
REFERENCES CLASS (classnumber)
) CLUSTER xyz_clus(date1, time, number1);
ORA-01753: column definition incompatible with clustered column definition