Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Eindeutiger Index, der 'Null'-Werte nicht berücksichtigt

Ja, das ist das erwartete Verhalten in MySQL (tatsächlich auch in ANSI-92). NULL Werte werden in eindeutigen Schlüsseln nicht als gleiche Werte behandelt und Primärschlüssel dürfen nicht NULL enthalten Werte per Definition.

(http://www.contrib.andrew.cmu.edu /~shadow/sql/sql1992.txt )

Da Sie die Fremdschlüsseleinschränkung für die Nullable-Spalte haben, würde ich vorschlagen, den übergeordneten Tabellen einen Dummy-Wert hinzuzufügen, der angibt, dass das übergeordnete Element irrelevant oder nicht bestimmt ist (die Datensätze mit ID =0 möglicherweise) und den NOT NULL Beschränkung auf die Spalte. (Zusätzlich können Sie den Dummy-Wert als DEFAULT hinzufügen ).