🌲
【Oracle Database】決まった値だけを登録したい
概要
MySQLではMySQLでカラム値は制限できない?実はできたの記事にある通り、ENUMを使用して決まった値のみ登録可能というのを実現できます。
これをOracle Databaseで実現する場合、どうすれば良いか。OracleではENUMの機能はありません。ということで、対応方法をメモ書きします。
対応
Best Practice for "flag" columnsの記事の回答にある通り、CHECK制約を使用することで同様の制約を実現できそうです。
CHECK制約の概要については、こちらのドキュメントを参照ください。
サンプルSQL
CATEGORY
というテーブルのopen_flag
というカラムを、「OPEN」と「CLOSED」のみに制限する例です。
CREATE TABLE CATEGORY (
id VARCHAR2(100),
name VARCHAR2(1000) NOT NULL,
open_flag VARCHAR2(100) NOT NULL,
constraint pk_category_id primary key(id),
constraint category_open_flag_chk CHECK (open_flag IN ('OPRN', 'CLOSED'))
)
Discussion