我在db2 11.5上创建了一个数据库,然后是表空间,最后创建了一个表。到目前为止一切正常。但是,当我试图在新创建的TABLESPACE中创建索引时,它抱怨语法错误:
CREATE INDEX SCH.TBL_PMT_ERR_NIX01 ON SCH.TBL_PMT_ERR (PMT_NO ASC, PMT_ERR_ID ASC) in TBS_EC_SINDEX;
发生错误:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0109N The statement or command was not processed because the following
clause is not supported in the context where it is used: "IN". SQLSTATE=42601
我尝试了这两个,但它们仍然不工作,抱怨“PARTITION”子句不受支持
CREATE INDEX SCH.TBL_PMT_ERR_NIX01 ON SCH.TBL_PMT_ERR (PMT_NO ASC, PMT_ERR_ID ASC) partitioned in TBS_EC_SINDEX;
CREATE INDEX SCH.TBL_PMT_ERR_NIX01 ON SCH.TBL_PMT_ERR (PMT_NO ASC, PMT_ERR_ID ASC) not partitioned in TBS_EC_SINDEX;
你能帮我指出我错过了什么吗?
1条答案
按热度按时间wlwcrazw1#
当您执行
create table
叙述句时,可以选择性地指定index in
子句,让索引使用您预先建立的特定表格空间。PARTITIONED表格可以使用其他功能。您在问题中忽略的关键细节是您的表本身是否已分区。
create index
的documentation声明IN tablespapace-name
子句只能指定为分区表的非分区索引。因此,如果表本身不是分区的,则在创建索引时不能使用此IN子句,应考虑使用create table
语句来标识该表的索引表空间。