61 Stimmen

Wie füge ich einen auto_increment Primärschlüssel in einer SQL Server-Datenbank hinzu?

Ich habe eine Tabelle eingerichtet, die derzeit keinen Primärschlüssel hat. Alles, was ich tun muss, ist ein primary key, no null, auto_increment .

Ich arbeite mit einem Microsoft SQL Server Datenbank. Ich weiß, dass dies nicht mit einem einzigen Befehl möglich ist, aber jeder Befehl, den ich ausprobiere, gibt Syntaxfehler zurück.

--------------- bearbeiten

Ich habe den Primärschlüssel erstellt und ihn sogar als ungültig festgelegt. Allerdings kann ich den Primärschlüssel nicht einrichten. auto_increment .

Ich habe es versucht:

ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment

Ich benutze NVARCHAR weil es mich nicht einstellen ließ NOT NULL unter int

119voto

gbn Punkte 407102

Dies kann mit einem einzigen Befehl geschehen. Sie müssen die Eigenschaft IDENTITY für "auto number" festlegen:

ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY

Genauer gesagt, um eine benannte Einschränkung auf Tabellenebene festzulegen:

ALTER TABLE MyTable
   ADD MytableID int NOT NULL IDENTITY (1,1),
   CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)

Véase ALTER TABLE und IDENTITY auf MSDN

21voto

Andreas Ågren Punkte 3681

Wenn die Tabelle bereits Daten enthält und Sie eine der Spalten in Identität ändern möchten:

Erstellen Sie zunächst eine neue Tabelle mit denselben Spalten und geben Sie die Primärschlüsselspalte an:

create table TempTable
(
    Id int not null identity(1, 1) primary key
    --, Other columns...
)

Kopieren Sie dann alle Zeilen aus der Originaltabelle in die neue Tabelle mit einem Standard insert -Erklärung.

Löschen Sie dann die ursprüngliche Tabelle.

Und schließlich umbenennen TempTable auf das gewünschte Ergebnis mit sp_rename :

http://msdn.microsoft.com/en-us/library/ms188351.aspx

13voto

ChrisCamp Punkte 662

Sie können diese Aktion auch über SQL Server Management Studio durchführen.

Rechtsklick auf die ausgewählte Tabelle -> Ändern

Klicken Sie mit der rechten Maustaste auf das Feld, das Sie als PK festlegen möchten --> Primärschlüssel festlegen

Setzen Sie unter "Spalteneigenschaften" die Option "Identitätsangabe" auf Ja und geben Sie dann den Startwert und den Inkrementwert an.

Wenn Sie in Zukunft diese Dinge in einem Skript abbilden möchten, können Sie mit der rechten Maustaste auf die gerade geänderte Tabelle klicken und

"SKRIPT TABELLE ALS" --> ERSTELLEN BIS

damit Sie sich selbst ein Bild von der korrekten Syntax für die Durchführung dieser Aktion machen können.

1voto

gustavo herrera Punkte 51

Wenn Sie die Spalte haben, ist es sehr einfach.

Mit dem Designer können Sie die Spalte als Identitätsspalte (1,1) festlegen: Klicken Sie mit der rechten Maustaste auf den Tabellenentwurf in Teil links (Rechtsklick) Eigenschaften in Identitätsspalten, wählen Sie #Spalte.


Eigenschaften :

enter image description here

Identitätsspalte :

enter image description here

0voto

Chandan Deb Punkte 1

In SQL Server 2008:

  • Rechtsklick auf die Tabelle
  • Zum Design gehen
  • Numerischen Datentyp auswählen
  • Name zur neuen Spalte hinzufügen
  • Identitätsangabe auf 'YES' setzen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X