SAP HANAの自動採番方法
SAP HANAの自動採番の方法を紹介します。
すべての内容はこの動画にあります。動画が使用しているソースコードはGithubに公開されています。
もう少しSQLの中身を説明します。 公式ドキュメントでも参考してください。
HANAの自動採番はIdentityに基づいて実現される。
CREATE COLUMN TABLE EMPLOYEES ( EMPID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY (start with 100), EMP VARCHAR(20), ROLE VARCHAR(20), SALARY INTEGER );
上記コードに記載されている通り、項目定義する際にGENERATED ALWAYS AS IDENTITY で定義する。
ALWAYS AS以外に、BY DEFAULTというOptionもあります。違いは
- ALWAYSの場合、生成された列は自動採番以外、ユーザーからデータをInsertできない。
- BY DEFAULTの場合、Insertしなかったら自動採番します。ユーザーから直接データをInsertすることもできる。ただ、ユーザーが入力した数字は採番履歴を上書きしますので、次の自動採番はユーザーの入力値の次から採番します。
特別な要件がなければALWAYSを使用することを推奨します。BY DEFAULTを使うと、ユーザーが間違って採番列を更新すると、番号が狂う可能性があります。
例:
1 商品A → 自動採番 2 商品B → 自動採番 999 商品C → ユーザー入力 1000 商品D → 自動採番
また、下記パラメータで採番の間隔、初期値を設定することも可能です。
INCREMENT BY <increment_value> MAXVALUE <max_value> NO MAXVALUE MINVALUE <min_value> NO MINVALUE CYCLE NO CYCLE CACHE <cache_size> NO CACHE RESET BY <subquery>
※補足
- IdentityはHANAを再起動しても、元の採番履歴を保持しますので、リセットしない限り、採番をし続ける仕様となります。
- 採番をリセットしたい場合、 ALTER SEQUENCE seq RESTART WITH 1; を利用する。