我有几个表,我想集群,但是,我已经把问题归结为这个表。这是我创建群集的方法。
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
正如我在你的解释 其他问题,数据类型a需要完全匹配。下面的代码是可行的。
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
但是,这导致了一个错误,因为它使用了 TIMESTAMP(0)
表中 TIMESTAMP
群中的。
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
同样,复合键中列的顺序也很重要。下面的查询中,正确的是 TIMESTAMP
但表中各列的顺序为 DATE, TIMESTAMP, INT
和在集群中 INT, DATE, TIMESTAMP
:
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