2009-08-28 11 views
114

Ich habe ein Feld, das Produktcodes speichert. Die Codes sind einzigartig, aber einige Produkte haben einfach keinen Code. Ich kann Codes nicht erfinden, weil diese Codes sind.Eindeutige Beschränkung, die leere Werte in MySQL erlaubt

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

Ich bin ein Noob mit gespeicherten Prozeduren und Triggern, wenn also die Lösung eine dieser beinhaltet, bitte haben Sie etwas Geduld.

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

+0

Mögliches Duplikat von [Unterschreibt MySQL NULL-Werte bei eindeutigen Einschränkungen?] (Http://stackoverflow.com/questions/3712222/does-mysql-ignore-null-values-on-unique-constraints) –

+0

@AmirAliAkbari Es ist komisch wie diese beiden als "mögliches duplikat" miteinander verlinken. Dieser ist jedoch älter. :) – Pijusn

Antwort

174

Ja, Sie können dies tun. Siehe MySQL reference (version 5.5).

Ein UNIQUE-Index erstellt eine Einschränkung, sodass alle Werte im Index eindeutig 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 ermöglicht ein UNIQUE-Index mehrere NULL-Werte für Spalten, die NULL enthalten können.

+7

Danke. Ich muss es NULL machen –

+0

hatte dieses Problem in Django-Modell. NULL-fähige Arbeiten machen. Danke – Shrey

8

MySQL erlaubt immer noch mehrere Zeilen mit einem Wert von NULL in einer eindeutigen Spalte.

+0

Danke. Ich muss es NULL machen –

+0

Wie ist es möglich? –

+0

@MianAnjum fett: CREATE TABLE 'table' (' Schlüssel' int (11) NOT NULL AUTO_INCREMENT, 'Feld' tinyint (1) ** DEFAULT NULL **) –

13

Ja, wenn Sie die Produktcode-Spalte auf Null setzen (nicht mit NOT NULL deklariert), erlaubt der eindeutige Schlüssel mehrere Zeilen mit NULL Produktcodes.

+0

Danke. Ich muss es nulbelbar machen –

Verwandte Themen