web-dev-qa-db-ja.com

Oracleでブール列を作成するときのベストプラクティスは何ですか?

私は再び深刻な問題に直面しました。Oracleにはブール型の列型がないだけなのです。 char(1)smallint、またはその他を使用する必要があります。

Oracleでブール値をエミュレートするためのベストプラクティスは何ですか?

(現在、スペースの消費は重要ではありませんが、Java/hibernateラインとの良好な連携が重要でした)。

デフォルト値が必要なSMALLINT列を使用することをお勧めします(1 = true、0 = false、デフォルト値= 0)。

2
Vadim

私は通常、チェック制約と組み合わせたnumber(1)タイプを使用します。

_some_flag number(1) not null check (some_flag in (1,0))
_

わかりやすくするために、そのテーブルにもコメントを追加します。

_comment on column some_table.some_flag is '0 is false, 1 is true';
_

テーブルの定義を見ると、「真」の意味の説明が見られるように。

ローカリゼーションの問題のため、文字表現は避けます。ただし、そうする場合は、適切なチェック制約を作成してください。 char(1)TYyt(または私がドイツ語で見たWまたはJ)を使用するかどうかは明確でないためです。