SQL Server kann Null nicht in Primärschlüsselfeld einfügen?
Ich bin bereit, über rip meine Haare auf diese ein. Ich bin ziemlich neu in MS SQL, und habe nicht gesehen, einen ähnlichen Beitrag irgendwo.
Wenn ich versuche, eine Aussage wie diese:
INSERT INTO qcRawMatTestCharacteristic
VALUES(NULL, 1,1,1,1,1,1,1,'','','', GETDATE(), 1)
Bekomme ich die folgende:
Kann nicht eingefügt werden der Wert NULL in
die Spalte "iRawMatTestCharacteristicId',
Tabelle
'Intranet.dbo.qcRawMatTestCharacteristic';
Spalte keine null-Werte zulässt. EINFÜGEN
fehl.
Verstehe ich die Fehler, sondern der null-Wert ist für meine meine primäre Feld mit einem int-Datentyp.
Irgendwelche Ideen!?
Kommentar zu dem Problem - Öffnen
Okay, ich sollte klarstellen. ICH WILL EINFACH EIN AUTO-INCREMENT PRIMARY KEY. In MySQL ein NULL-Wert wird mir dieser Effekt. Wenn ich die gleiche INSERT-Anweisung, wie oben angeben, meine Felder, und lassen Sie die Primärschlüssel. Ich bekomme den GLEICHEN Fehler.
@Nick: in dieser Spalte in SQL Server definiert werden muss, als ein
INT IDENTITY
für diese zu arbeiten. Der Schlüssel ist das ID
- Teil - müssen Sie haben, definiert auf Ihrer PK-Spalte, sonst funktioniert es nicht Ich hab es jetzt Jungs. Vielen Dank. Ich bin mir dessen bewusst, wie relationale Datenbanken funktionieren. Aber Sie beantwortet meine MS-SQL-Frage. 🙂
@Nick: ok, bin froh, dass wir helfen konnten. SQL ist standardisiert..... zu einem gewissen Grad 🙂 darüber Hinaus sind es natürlich auch mehr oder weniger feine Unterschiede 🙂
@Conrad ich weiß, das Sie geschrieben vor mir, aber ich dachte, du aktualisiert deine post nach mir. Ich kann nicht sehen, den Zeitstempel. Ich bin nur ein Scherz herum.
InformationsquelleAutor der Frage Nick | 2010-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Primärschlüssel in alle relationalen Datenbank dürfen nicht NULL sein - es ist eines der wichtigsten, grundlegenden Eigenschaften eines primary key.
Finden Sie unter: SQL-by-Design: wie Sie das primary key
UPDATE: ok, du willst also ein "auto-increment" - Primärschlüssel in SQL Server.
Müssen Sie definieren es als INT-IDENTITÄT in der CREATE TABLE-Anweisung:
dann, wenn Sie eine INSERT -, müssen Sie explizit festlegen, welche Spalten einfügen, aber nicht angeben der Spalte "ID" in dieser Liste - dann SQL Server-handle finden, den richtigen Wert automatisch:
Wenn Sie dies tun wollen, nachdem Sie erstellt die Tabelle bereits, so können Sie in der SQL Server Management Studio die Tabelle designer:
InformationsquelleAutor der Antwort marc_s
Primary Key-Felder keine null-Werte enthalten, in MS SQL. Wenn Sie wollen, füllen Sie eine SQL-Tabelle und weiß nicht, was zu geben Sie eine integer-basierte primary key-Feld einstellen und dann die pk, um ein Identity-Feld. Auch bei der Angabe von Insert-Anweisungen eine Weise zu verwenden, die Spalte mapping-Teil der insert-statment zum Beispiel:
Der Grund dafür ist, es wird sichergestellt, dass die Reihenfolge der Spalten ist, was Sie entwickelt haben, für die als SQL-administrator können Sie ändern die Reihenfolge der Spalten. Es ermöglicht Ihnen auch das einfügen einer Zeile mit einer identity Primary key mit aus der Angabe den Wert des Primärschlüssels Beispiel
nun meine insert-Anweisung ist einfach
das Ergebnis in der Tabelle wäre
InformationsquelleAutor der Antwort John Hartsock
Wahrscheinlich haben Sie nicht haben (Sie vergaß hinzuzufügen) autoincrement gesetzt integer primary key.
InformationsquelleAutor der Antwort Alin Purcaru
Primärschlüssel nicht akzeptieren null-Wert.Warum Sie das einfügen von null-Werten, Primärschlüssel-Feld ?Primary key-Feld muss eine nicht-null-Werte zulässt,eindeutigen Wert, die machen alle Ihre Datensatz in der Tabelle eindeutig
InformationsquelleAutor der Antwort Shyju
können Sie 0 anstelle von null, für nur 1 Datensatz, null ist nicht möglich PK. Oder können Sie weglassen PK und auto-increament PK-Feld
InformationsquelleAutor der Antwort sirmak
Vorausgesetzt, Sie haben ein autoincrement-Feld für den primary Key müssen Sie lediglich das Feld Liste auf Ihre legen und Sie nicht einen Wert für dieses Feld z.B.
InformationsquelleAutor der Antwort Conrad Frix
Ich gehe davon aus, dass Ihr wirkliches Problem ist, dass Sie nicht sicher sind, wie Sie schreiben, eine insert-Anweisung, so dass die PK wird automatisch aufgefüllt, richtig? Sie müssen die Namen der Felder, die Sie beim festlegen der Werte, es sieht aus wie Sie versuchen, alle von Ihnen, aber einfach nur ausschließen das PK-Feld in etwa so:
Wo sometable ist eine Tabelle mit drei Feldern. PK, fieldName1, und fieldName2. Sie müssen auch sicherstellen, dass die identity-Eigenschaft der PK-Feld auf true festgelegt ist.
InformationsquelleAutor der Antwort Spencer Ruport
wenn Sie eine identity-Spalte ist, die Sie nicht benötigen, geben Sie es in der insert-Anweisung.
Jedoch, wenn Sie einen primären Schlüssel, der nicht eine identity-Spalte, dann brauchen Sie Sie nicht, um es zu spezifizieren, da ansonsten werde es versuchen, einfügen einer null und primary keys in der Standardeinstellung sind die nicht-null-Werte zulässt.
InformationsquelleAutor der Antwort DForck42