作成: 更新:
【MySQL】日付のNULL許容、ダメ。ゼッタイ。
この記事は最終更新日から11か月以上が経過しています。
このエントリーは約1分で読めます。
日付をユニークキーにしたところ、なぜかユニークじゃないレコードが出てきた
詳細
以下のテーブルがあり
nameだけじゃユニークにならなそうだから
created_byをつけてユニークにしようと思ったら
created_byつける前のレコードもユニークになってしまった
name | age | created_by |
---|---|---|
sato | 20 | 20000101 |
sato | 20 | 20000201 |
sato | 20 | null |
sato | 20 | null |
mysqlはnullはユニークとみなすらしい
(お恥ずかしい話ですが初めて知りました、ググるとめっちゃ情報出てきたし結構一般的らしい)
結論
- 日付はユニークキーとしてつかわない
- 日付は複合キーにも含めない
- 別に日付だけじゃないけどね、全部だね、null許容のメリットあんのかな。。。
- まあアンチパターン(Fear of the Unknown)だしね。。。ないよね。。。
- やるとしたらnullを許容しない
- notnull制約かける+既存レコードにもきを配る(マイグレーションしましょう)