Hinzufügen Sie können die Identität vorhandene Spalte in sql server 2008?
In all meinem suchen habe ich sehen, dass Sie im wesentlichen aus, kopieren Sie die vorhandene Tabelle in eine neue Tabelle, um die chance zu identity-Spalte für vor 2008, gilt dies bis 2008 auch?
Dank.
prägnanteste Lösung, die ich bis jetzt gefunden habe:
CREATE TABLE Test
(
id int identity(1,1),
somecolumn varchar(10)
);
INSERT INTO Test VALUES ('Hello');
INSERT INTO Test VALUES ('World');
-- copy the table. use same schema, but no identity
CREATE TABLE Test2
(
id int NOT NULL,
somecolumn varchar(10)
);
ALTER TABLE Test SWITCH TO Test2;
-- drop the original (now empty) table
DROP TABLE Test;
-- rename new table to old table's name
EXEC sp_rename 'Test2','Test';
-- see same records
SELECT * FROM Test;
InformationsquelleAutor | 2010-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
In allen neuen Dokumenten, die ich gelesen über 2008, Identität hinzufügen zu einer vorhandenen Spalte war nicht ein feature, auf das ich mich erinnere. Die Lösung, die du gefunden hast ist richtig und ich denke, dass der Prozess zum hinzufügen von identity increment-Spalte automatisch wäre nur selten nützlich.
Sie brauchen nicht eine IDENTITY-Spalte in dump-test Daten in eine Tabelle. Kannst du nicht einfach verwenden, ROW_NUMBER() und explizit füllen Sie diese Spalte? Wenn Sie die Erstellung von test-Daten, können Sie nicht einfach die Tabelle löschen und neu erstellen Sie es richtig in den ersten Platz?
Dies ist, wie die Tabelle suppossed zu werden, ist nicht id-Feld in der lokalen DB. Können Sie ein Beispiel geben-Einsatz mit Row_Number()? danke.
Ich denke, das wird funktionieren: INSERT INTO Test(id,somecolumn) SELECT ROW_NUMBER() OVER (ORDER BY id), somecolumn VON Test2
InformationsquelleAutor marr75
wir nicht hinzufügen können, die Identität zu einer vorhandenen Spalte mit dem sql-Befehl, aber wir können es über die GUI.
Der rechten Maustaste auf die Tabelle - design - wählen Sie die Spalte, die Sie hinzufügen möchten Identität.
gehen Sie zu den Eigenschaften finden Sie unten. finden Sie die Identität, Spezifikation und setzen Sie es auf ja.
speichern Sie die Tabelle.
wenn es nicht gespeichert, gehen Sie zu Extras Menü - Optionen - Tabellen-designer - deaktivieren Sie das Kontrollkästchen verhindern, dass das speichern von änderungen. jetzt können Sie die Tabelle speichern änderungen.
nun deine vorhandene Tabelle hatte Identität.
InformationsquelleAutor user2571556
Nun, man kann so etwas tun.
Dies fügt eine neue Spalte ein, ist es nicht die IDENTITY-Eigenschaft hinzuzufügen, um eine vorhandene Spalte.
Ja, aber dann dürfte es möglicherweise einfacher sein, fügen Sie eine separate identity-Spalte, und löschen Sie dann den bestehenden ein - es sei denn, er ist bereits der Einsatz als primär-Schlüssel (mit dem FK Beziehungen zu anderen Tabellen.
InformationsquelleAutor no_one
Können Sie die IDENTITY-Eigenschaft hinzuzufügen, um eine vorhandene Spalte, mithilfe der grafischen Benutzeroberfläche von Enterprise Manager /Management Studio.
Danke, ja ich weiß.
Nur eine Warnung, nicht über SSMS tun dies auf einem großen Tisch, es sei denn, die Datenbank in eine Art Wartungsmodus und Benutzer Zugriff auf diese Tabelle nicht aktiv anschließen.
InformationsquelleAutor
In SQL 2005 und früher, konnte Sie nicht ändern einer vorhandenen Spalte zu einer identity-Spalte. Halte ich es für sehr sehr unwahrscheinlich, dass MS geändert, dass in 2008.
InformationsquelleAutor Philip Kelley