ibm db2无法在表空间中创建索引

bfnvny8b  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(237)

我在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;

你能帮我指出我错过了什么吗?

wlwcrazw

wlwcrazw1#

当您执行create table叙述句时,可以选择性地指定index in子句,让索引使用您预先建立的特定表格空间。PARTITIONED表格可以使用其他功能。
您在问题中忽略的关键细节是您的表本身是否已分区。
create indexdocumentation声明IN tablespapace-name子句只能指定为分区表的非分区索引。因此,如果表本身不是分区的,则在创建索引时不能使用此IN子句,应考虑使用create table语句来标识该表的索引表空间。

相关问题