如何在不同数据类型的复合键上添加一个簇?

问题描述 投票:0回答:1

我有几个表,我想集群,但是,我已经把问题归结为这个表。这是我创建群集的方法。

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
sql oracle indexing sqlplus composite-key
1个回答
1
投票

正如我在你的解释 其他问题,数据类型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
© www.soinside.com 2019 - 2024. All rights reserved.