SQL Primärschlüssel kann '0' akzeptieren?

8

SQL Server 2008/2005

Ich bin verwirrt zwischen Primary und Unique Key.

Ich bin mir bewusst, dass der Primärschlüssel NULL nicht erlaubt, während Unique NULL akzeptiert. Außerdem kann eine Tabelle eine Anzahl eindeutiger Schlüssel haben.!

Ob Primärschlüssel Null erlaubt?

    
goofyui 25.03.2011, 00:10
quelle

3 Antworten

14

Primärer Schlüssel kann Null sein, aber wenn Sie Identität für die Spalte festlegen, beginnt sie normalerweise bei 1 statt bei Null.

    
Robbie Tapping 25.03.2011, 00:14
quelle
7

Ein Primärschlüssel kann 0 abhängig vom Datentyp des Primärschlüssels zulassen. Eine automatisch generierte PK (Identity) kann bei 0 beginnen, aber das ist nicht das Standardverhalten, Sie müssen es so einrichten, dass es bei 0 beginnt (Sie können mit negativen Zahlen beginnen, wenn Sie möchten). Die besten Ergebnisse erzielen Sie, wenn Sie mit der Dateneingabe in die Tabelle beginnen.

Was Sie nicht tun können, sind mehrere Datensätze mit einer 0 als PK, da dies die Eindeutigkeitsanforderung des PK verletzt.

Wenn Sie bereits existierende Daten haben und einen Datensatz mit einem Wert von Null für einen bestimmten Zweck wünschen (z. B. geben wir einen Benutzer für unseren Importprozess an, sodass das insertby-Feld anzeigen kann, dass der Datensatz von einem Import stammt), Was Sie dann wahrscheinlich wollen, ist eine manuelle Eingabe in das Identitätsfeld, damit Sie diesen einen spezifischen Datensatz mit dem gewünschten Wert eingeben und dann zu den üblichen Einstellungen zurückkehren können. Dies geschieht folgendermaßen:

%Vor%

Tun Sie dies nicht im Anwendungs-Produktionscode, dies ist ein Systemadministratortyp, der nur gelegentlich für die Einstellung eines bestimmten Datensatzes außerhalb des Bereichs der normalen Daten oder für das Einfügen von Datensätzen aus einer anderen Quelle ( wenn Sie wissen, dass ihre vorhandenen ID-Werte derzeit nicht verwendet werden. Dies sollte nicht leicht verwendet werden, um die Beschränkungen eines Identitätsfeldes zu umgehen. Insbesondere sollte es niemals zum Ausfüllen von Datensätzen verwendet werden, bei denen die Identität übersprungen wurde (aufgrund einer Löschung oder eines Rollbacks), da dies den Zweck der Verwendung einer Identität verhindert und Datenintegritätsprobleme verursachen kann, wenn keine geeigneten PK / FK-Beziehungen eingerichtet wurden / p>     

HLGEM 25.03.2011 15:38
quelle
3

Ja. NULL ist die Abwesenheit eines Wertes. 0 ist ein Wert.

    
climbage 25.03.2011 00:13
quelle