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

IBM DB2在截断表上重新创建索引,db2,reindex,Db2,Reindex,截断表并在表中插入新值后,自动增量值不会设置为起始值1。插入新值时,记住自动增量的最后一个索引ed值 表中的列名为:ID 索引:PRIMARY 初始值:1 缓存大小:1 增量:1 [已在IBM DB2 Control Center上检查] 此查询: TRUNCATE TABLE ".$this->_schema.$table." DROP STORAGE IGNORE DELETE TRIGGERS IMMEDIATE 桌子是空的 插入新值后示例:INSERT INTO DB2INST1

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

表中的列名为:
ID
索引:
PRIMARY

初始值:
1

缓存大小:
1

增量:
1

[已在IBM DB2 Control Center上检查]

此查询:

TRUNCATE TABLE ".$this->_schema.$table." DROP STORAGE IGNORE DELETE TRIGGERS IMMEDIATE
桌子是空的

插入新值后示例:
INSERT INTO DB2INST1.db(val)VALUES('abc')
插入最后一个值

ID | val

55 | abc
但它应该是:

ID | val

1  | abc

我猜您的问题是“如何重新启动
标识
序列?”如果是这种情况,那么您可以使用以下SQL重置它:

ALTER TABLE <table name> ALTER COLUMN <IDENTITY column> RESTART WITH 1
ALTER TABLE ALTER COLUMN用1重新启动

然而,正如@Ian所说,您看到的是
截断的预期行为

首先在表模式中选择,其中是标识列的名称:

问题1:

从SYSCAT.COLUMNS中选择COLNAME,其中TABSCHEMA='DB2INST1'和 TABNAME='DB'和IDENTITY='Y'

然后,截断表并返回其示例:ID,用于更改索引:

问题2:

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

ALTER TABLE DB2INST1.DB ALTER COLUMN ID RESTART WITH 1
上面的更改ID是从查询1返回的,它将ID的名称返回给查询2


解决了

这是一个问题吗?这是TRUNCATE TABLE的预期行为。是的,但我不希望使用DESCRIBE TABLE搜索增量列并选择as。意思是,自动搜索标识列的名称,但描述表未找到增量列名称。很快,要通过搜索名称增量列找到的名称,然后将此列名称放入,这不是我的问题,我不接受答案。你必须等很多天才能接受自己对自己问题的回答。