2016-10-10 3 views
0

Ich habe eine Datenbank mit dem Namen Firma und eine Tabelle namens EmployeesTD erstellt und vergaß automatisches Inkrement zu meiner EmployeeID Zeile hinzuzufügen, wie aktualisiere ich meine Tabelle, um automatisches Inkrement hinzuzufügenSQL Update/Ändern oder Einfügen?

+0

Verwendung gibt es irgendwelche Daten in der Tabelle in EmployeesTD Tabelle? – VDK

+1

Ich glaube, du kannst die Spalte fallen lassen und sie als Identität hinzufügen und sie automatisch füllen lassen. – Igor

Antwort

0

1) Erstellen Sie eine neue Tabelle mit einem temporären Namen und der Auto Bewegen Inkrementfeld

2) alle Daten aus der alten Tabelle in neue Tabelle (mit identity_insert)

3) Lassen sie die alte Tabelle

4) Benennen sie die neue Tabelle, um es ursprünglicher Name ist

(Vergessen Sie nicht, Ihre Indizes hinzuzufügen, wenn Sie welche haben. Füge Sie sie anschließend, wenn Sie tun, um unnötigen Index Wiederaufbau zu vermeiden.)

0
alter table t1 
add somename int identity(1,1) 

oder sonst

create table dummytable 
(
id int identity(1,1) 
somecols -- 

) 

insert into dummytable 
select colnames from orginaltable 

schließlich Indizes hinzufügen und benennen Dummy original

ich mit dem zweiten Ansatz gehen würde, wenn Tabelle hat große Daten, da die erste Operation kann eine Sperre für die Tabelle vollständig

0

nehmen Sie können einfach ALTER TABLE Abfrage

ausführen
ALTER TABLE EmployeesTD ADD id INT IDENTITY(1,1) 

Auch wenn Sie Datensätze haben die obige Aussage wird bevölkern Eindeutige Werte für jede Zeile

Ein anderer Ansatz Identity Funktion

-- 1. create a temporary table 
SELECT IDENTITY(int, 1, 1) AS id, 
     * 
INTO temp_EmployeesTD 
FROM EmployeesTD 

-- 2. drop the orginal table 
DROP TABLE EmployeesTD 

-- 3. rename the temporary table to orginal table 
EXEC Sp_rename 
    'temp_EmployeesTD', 
    'EmployeesTD' 

-- 4. Recreate the indexes if any 
0
ALTER TABLE Table_name MODIFY COLUMN col_name INT auto_increment