LoginSignup
3
2

More than 1 year has passed since last update.

ユニークキーはNULL許容します(圧)

Posted at

仕事でちょっと話題になったので、備忘録として残しておきます。

話題になったのはNOT NULLかNULLなのかという話題でした。

キー制約について

データベースでは基本的に、以下のような3つのキー制約があります。

  • PK(プライマリーキー、主キー制約)
  • UK(ユニークキー)
  • FK(外部キー)

今回はこのUKについてです。

UK自体にはNULL制約はないよ

ユニークキー制約は、NULLを許容しNULL以外の値での一意制約をかける制約です。

従って、単純にUK制約だけ入れた場合はNULLを入れることができ、複数のレコードでNULL値を設定できます。

仮に、UKでNULLを許容したくない場合は、NOT NULL制約を入れる必要があります。

NULLも含めて一意制約と扱うDBMS

実はNULLを重複させることができるか?についても、DBMSによって異なる。
これも注意する必要がある。

DBMS NULLの重複
Oracle
Mysql
SQL Server ×

MYSQLでNULLを強要したくない場合の注意点。

NOT NULLは後で付与する必要があります。

結論

  • UK自体はNOT NULLではありません
  • NULLを重複できるかは、DBMSによる。
  • NULLを許容したくない場合は、NOT NULL制約をカラムに定義する必要がある
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2