id | id_type | |
---|---|---|
id_0001 | main | |
id_0002 | sub | |
id_0001 | main | 新規登録 NG |
id_0002 | sub | 新規登録 OK |
例えばid_typeが"main"の時だけIDを一意にしたい、id_typeが"sub"の時はidの重複を許可する
というようなことをしたいときは以下のように制約を張れば良い
Oracle:ファンクション索引
CREATE UNIQUE INDEX インデックス名 ON テーブル名 (CASE WHEN id_type='main' THEN id ELSE NULL END);
PostgreSQL:部分インデックス
CREATE UNIQUE INDEX インデックス名 ON テーブル名 USING btree (id) WHERE id_type='main';
MySQL:Generated Column
使い方、未調査。