MySQLで空の値を許可する一意の制約


125

製品コードを格納するフィールドがあります。コードは一意ですが、一部の製品にはコードがありません。これらはプロバイダーコードであるため、コードを作成できません。

MySQLでこの種の制約は可能ですか?

私はストアドプロシージャとトリガーの初心者なので、ソリューションにこれらのいずれかが含まれる場合は、しばらくお待ちください。

更新:列はNULLではありません。それが私がこれを行うことができなかった理由です。



@AmirAliAkbariこれらの2つが「重複の可能性」として相互にリンクしているのはおかしいです。しかし、これは古いです。:)
Pijusn 2017年

回答:


182

はい、できます。MySQLリファレンス(バージョン5.5)を参照してください。

UNIQUEインデックスは、インデックス内のすべての値が異なる必要があるような制約を作成します。既存の行と一致するキー値を持つ新しい行を追加しようとすると、エラーが発生します。すべてのエンジンで、UNIQUEインデックスは、NULLを含むことができる列に対して複数のNULL値を許可します。


8
ありがとう。私はそれをnullableにしなければなりません
Disintegrator

ジャンゴモデルでこの問題がありました。nullableにすることで動作します。ありがとう
シュレイ

13

はい。商品コードの列をnull NOT NULLに設定できるようにすると(で宣言されない)、一意のキーでNULL商品コードを含む複数の行が許可されます。


ありがとう。私はそれをnullableにしなければなりません
Disintegrator

8

MySQLではNULL、一意の列に複数の行の値を含めることができます。


ありがとう。私はそれをnullableにしなければなりません
Disintegrator

@MianAnjum太字:CREATE TABLE tablekeyint(11)NOT NULL AUTO_INCREMENT、fieldtinyint(1)DEFAULT NULL
Paul Nowak
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.