截断表并在表中插入新值后,自动增量值不会设置为起始值1.插入新值时,它会记住自动增量的最后一个索引值。
表中的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
答案 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.
解决!