ID が生成された HSQLDB データベースがあり、自動インクリメント値を常に 100,000 より大きくしたいと考えています。これは HSQLDB で可能ですか? これはどのデータベースでも可能ですか?
6 に答える
HSQLドキュメントによると:
1.7.2以降、SQL標準構文がデフォルトで使用され、初期値を指定できるようになりました。サポートされている形式は (INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH n, [INCREMENT BY m])PRIMARY KEY, ...) です。BIGINT ID 列のサポートも追加されました。その結果、IDENTITY 列は、シーケンス ジェネレーターによって生成されたデフォルト値を持つ単純な INTEGER または BIGINT 列になります。
...
次に使用する IDENTITY 値は、
ALTER TABLE <table name> ALTER COLUMN <column name> RESTART WITH <new value>;
HSQLDB でそれを行う方法は次のとおりです。
次に使用する IDENTITY 値は、次のステートメントで変更できます。このステートメントは通常の操作では使用されず、ID ジェネレーターのリセットなどの特別な目的でのみ使用されることに注意してください。
ALTER TABLE ALTER COLUMN <column name> RESTART WITH <new value>;
私の知る限り、すべての SQL データベースで自動インクリメント フィールドのシード値を設定できます。
更新:これは、主要な SQL データベースでの ID/自動インクリメントの実装のリストです。
SQL Server で可能です。自動番号列を定義する場合、開始番号と増分を定義できます。
IDENTITY(100000, 1)
SQL Server でそれが可能であることは知っていますが、他のサーバーでも可能だと思います。
SQL Server では、ID 列のシード (開始番号) と増分値を設定できます。
Oracle や PostgreSQL など、シーケンスを使用するデータベースで実行できます。順序を作成するときに開始値を指定します。
これは、HSQL でも同様に実行できることを示唆しています。
HSQLについてはわかりませんが、MS SQLでは可能です。ID を自動インクリメントに設定し、シード値を 100,000 に設定します。