0

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

表中的列名为:ID

索引:PRIMARY,

初始值: 1

缓存大小:1

增量:1

[在 IBM DB2 控制中心检查]

这个查询:

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

表是空的。

在 INSERT NEW VALUES 示例之后:INSERT INTO DB2INST1.db (val) VALUES ('abc')它是 INSERT 和 LAST

ID | val

55 | abc

但它应该是:

ID | val

1  | abc
4

2 回答 2

1

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

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

但是,就像@Ian 所说,您所看到的是 a 的预期行为TRUNCATE

于 2012-08-29T13:34:48.060 回答
0

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

查询一:

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

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

查询 2:

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

ALTER TABLE DB2INST1.DB ALTER COLUMN ID RESTART WITH 1

更改上面从 Query 1 返回的 ID,将 ID 的名称返回给 Query 2。

解决了!

于 2012-08-29T18:59:47.657 回答