573 Stimmen

Hinzufügen einer Identität zu einer vorhandenen Spalte

Ich muss den Primärschlüssel einer Tabelle in eine Identitätsspalte ändern, und es gibt bereits eine Reihe von Zeilen in der Tabelle.

Ich habe ein Skript, um die IDs zu bereinigen, um sicherzustellen, dass sie bei 1 beginnend sequentiell sind, funktioniert gut auf meine Testdatenbank.

Wie lautet der SQL-Befehl, um die Spalte so zu ändern, dass sie eine Identitätseigenschaft hat?

3voto

Raj Punkte 10413

Es gibt keine einfache Möglichkeit, die Identitätsfunktion für eine vorhandene Spalte ein- oder auszuschalten. Die einzige Möglichkeit, dies zu tun, besteht darin, eine neue Spalte zu erstellen und sie zu einer Identitätsspalte zu machen oder eine neue Tabelle zu erstellen und Ihre Daten zu migrieren.

Wenn wir SQL Server Management Studio verwenden, um den Identitätswert der Spalte "id" loszuwerden, wird eine neue temporäre Tabelle erstellt, die Daten werden in die temporäre Tabelle verschoben, die alte Tabelle wird gelöscht und die neue Tabelle wird umbenannt.

Verwenden Sie Management Studio, um die Änderung vorzunehmen, und klicken Sie dann mit der rechten Maustaste in den Designer und wählen Sie "Generate Change Script".

Sie werden sehen, dass der SQL-Server im Hintergrund genau das tut.

2voto

A. Omalley Punkte 21

Wenn der ursprüngliche Poster tatsächlich eine vorhandene Spalte als PRIMARY KEY für die Tabelle und brauchte die Spalte eigentlich nicht als IDENTITY Spalte (zwei verschiedene Dinge), dann kann dies über t-SQL mit getan werden:

ALTER TABLE [YourTableName]
ADD CONSTRAINT [ColumnToSetAsPrimaryKey] PRIMARY KEY ([ColumnToSetAsPrimaryKey])

Beachten Sie die Klammern um den Spaltennamen nach der PRIMARY KEY Option.

Obwohl dieser Beitrag ist alt und ich mache eine Annahme über die Antragsteller benötigen, fühlte ich diese zusätzlichen Informationen könnte hilfreich sein, um Benutzer, die diesen Thread als ich glaube, das Gespräch könnte dazu führen, dass man glaubt, dass eine vorhandene Spalte kann nicht festgelegt werden, um einen Primärschlüssel ohne Hinzufügen es als eine neue Spalte zuerst, die falsch wäre.

2voto

Jeremy Smyth Punkte 22624

Leider gibt es keine; die Eigenschaft IDENTITY gehört zur Tabelle und nicht zur Spalte.

Der einfachere Weg ist, dies in der grafischen Benutzeroberfläche zu tun, aber wenn dies keine Option ist, können Sie den langen Weg gehen, indem Sie die Daten kopieren, die Spalte löschen, sie mit der Identität wieder einfügen und die Daten wieder einfügen.

Siehe ici für einen ausführlichen Bericht.

2voto

Klicken Sie mit der rechten Maustaste auf den Tabellennamen im Object Explorer. Sie erhalten dann einige Optionen. Klicken Sie auf 'Entwurf'. Es wird eine neue Registerkarte für diese Tabelle geöffnet. Sie können hier unter "Spalteneigenschaften" eine Identitätsbeschränkung hinzufügen.

2voto

Ken.Fukizi Punkte 177

So ändern Sie die Identitätseigenschaften für eine Spalte:

  • Klicken Sie im Server Explorer mit der rechten Maustaste auf die Tabelle mit den Identitätseigenschaften, die Sie ändern möchten, und klicken Sie auf Tabellendefinition öffnen. Die Tabelle wird im Tabellendesigner geöffnet.
  • Deaktivieren Sie das Kontrollkästchen Nullen zulassen für die Spalte, die Sie ändern möchten.
  • Erweitern Sie auf der Registerkarte Spalteneigenschaften die Eigenschaft Identitätsspezifikation.
  • Klicken Sie auf die Gitterzelle für die untergeordnete Eigenschaft Ist Identität und wählen Sie in der Dropdown-Liste Ja.
  • Geben Sie einen Wert in die Zelle Identity Seed ein. Dieser Wert wird der ersten Zeile der Tabelle zugewiesen. Standardmäßig wird der Wert 1 zugewiesen.

Das war's, und es hat bei mir funktioniert.

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