0

テーブルを切り捨て、テーブルに新しい値を挿入した後、自動インクリメント値は開始値 1 に設定されません。新しい値を挿入すると、自動インクリメントの最後にインデックス付けされた値が記憶されます。

次の名前のテーブルの列:ID

インデックス: PRIMARY,

初期値: 1

キャッシュ サイズ:1

インクリメント:1

[ IBM DB2 Control Centerで確認]

このクエリ:

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

テーブルは空です。

INSERT NEW VALUES の例INSERT INTO DB2INST1.db (val) VALUES ('abc')の後: LAST を使用した INSERT です。

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 列の名前です。

クエリ 1:

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

次に、テーブルを切り捨てて、その例を返します: インデックスを変更するためのID :

クエリ 2:

このIDは、インデックスの ID をリセットおよび変更するためのクエリを実行します。

ALTER TABLE DB2INST1.DB ALTER COLUMN ID RESTART WITH 1

クエリ 1 から返された上記の ID を変更し、ID の名前をクエリ 2 に返します。

解決しました!

于 2012-08-29T18:59:47.657 に答える