Einzigartige Einschränkung, die leere Werte in MySQL zulässt


125

Ich habe ein Feld, in dem Produktcodes gespeichert sind. Die Codes sind eindeutig, aber einige Produkte haben einfach keinen Code. Ich kann keine Codes erfinden, da dies Anbietercodes sind.

Ist diese Art von Einschränkung in MySQL möglich?

Ich bin ein Neuling mit gespeicherten Prozeduren und Triggern. Wenn die Lösung eine davon beinhaltet, haben Sie bitte etwas Geduld.

Update: Die Spalte ist NICHT Null. Deshalb konnte ich das nicht.



@AmirAliAkbari Es ist lustig, wie diese beiden als "mögliches Duplikat" miteinander verknüpft sind. Dieser ist allerdings älter. :)
Pijusn

Antworten:


182

Ja, das kannst du machen. Siehe die MySQL-Referenz (Version 5.5) .

Ein UNIQUE-Index erstellt eine Einschränkung, sodass alle Werte im Index unterschiedlich sein müssen. Ein Fehler tritt auf, wenn Sie versuchen, eine neue Zeile mit einem Schlüsselwert hinzuzufügen, der einer vorhandenen Zeile entspricht. Für alle Engines erlaubt ein UNIQUE-Index mehrere NULL-Werte für Spalten, die NULL enthalten können.


8
Vielen Dank. Ich muss es nullbar machen
The Disintegrator

hatte dieses Problem im Django-Modell. Es funktioniert nullbar. Danke
Shrey

13

Ja, wenn Sie die Produktcode-Spalte nullwertfähig machen (nicht mit deklariert NOT NULL), ermöglicht der eindeutige Schlüssel mehrere Zeilen mit NULLProduktcodes.


Vielen Dank. Ich muss es nullbar machen
The Disintegrator

8

In MySQL können weiterhin mehrere Zeilen den Wert NULLin einer eindeutigen Spalte haben.


Vielen Dank. Ich muss es nullbar machen
The Disintegrator

@MianAnjum fett gedruckt: CREATE TABLE table( keyint (11) NICHT NULL AUTO_INCREMENT, fieldtinyint (1) DEFAULT NULL )
Paul Nowak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.