IBM DB2在截断表上重新创建索引

时间:2012-08-28 22:34:32

标签: db2 reindex

截断表并在表中插入新值后,自动增量值不会设置为起始值1.插入新值时,它会记住自动增量的最后一个索引值。

表中的

Colum:ID

索引:PRIMARY

初始值:1

缓存大小:1

增量:1

[在IBM DB2 Control Center上检查]

此查询:

TRUNCATE TABLE ".$this->_schema.$table." DROP STORAGE IGNORE DELETE TRIGGERS IMMEDIATE

表是EMPTY。

INSERT NEW VALUES示例后:INSERT INTO DB2INST1.db (val) VALUES ('abc')它是最后一次INSERT

ID | val

55 | abc

但它应该是:

ID | val

1  | abc

2 个答案:

答案 0 :(得分:1)

我猜这里的问题是“你如何重启IDENTITY序列?”如果是这种情况,则可以使用以下SQL重置它:

ALTER TABLE <table name> ALTER COLUMN <IDENTITY column> RESTART WITH 1

然而,就像@Ian所说,你所看到的是TRUNCATE的预期行为。

答案 1 :(得分:0)

首先在TABLE SCHEMA中选择WHERE是IDENTITY列的名称:

查询1:

  

SELECT SYNAME FROM SYSCAT.COLUMNS WHERE TABSCHEMA ='DB2INST1'AND   TABNAME ='DB'和IDENTITY ='Y'

然后,截断表并返回它的示例: ID 以更改索引:

查询2:

ID 会查询重置和更改索引标识:

ALTER TABLE DB2INST1.DB ALTER COLUMN ID RESTART WITH 1

更改从查询1返回的ID,将ID的名称返回给查询2.

解决!