SQL Server : Comment définir l'auto-incrémentation sur une table contenant des lignes :
Cette stratégie copie physiquement les lignes deux fois, ce qui peut prendre beaucoup plus de temps si la table que vous copiez est très grande.
Vous pourriez sauvegarder vos données, supprimer et reconstruire la table avec l'auto-incrément et la clé primaire, puis charger à nouveau les données.
Je vais vous guider à l'aide d'un exemple :
Etape 1, créer la table foobar (sans clé primaire ou auto-incrément) :
CREATE TABLE foobar(
id int NOT NULL,
name nchar(100) NOT NULL,
)
Étape 2, insérer quelques lignes
insert into foobar values(1, 'one');
insert into foobar values(2, 'two');
insert into foobar values(3, 'three');
Etape 3, copier les données de foobar dans une table temporaire :
select * into temp_foobar from foobar
Etape 4, abandon de la table foobar :
drop table foobar;
Étape 5, recréez votre table avec les propriétés de clé primaire et d'auto-incrément :
CREATE TABLE foobar(
id int primary key IDENTITY(1, 1) NOT NULL,
name nchar(100) NOT NULL,
)
Etape 6, réinsérez vos données de la table temporaire dans foobar.
SET IDENTITY_INSERT temp_foobar ON
INSERT into foobar (id, name) select id, name from temp_foobar;
Étape 7, déposez votre table temporaire, et vérifiez si cela a fonctionné :
drop table temp_foobar;
select * from foobar;
Vous devriez obtenir ceci, et lorsque vous inspectez la table foobar, la colonne id est auto-incrémentée de 1 et id est une clé primaire :
1 one
2 two
3 three
0 votes
Pas sûr que vous puissiez le faire : voir stackoverflow.com/questions/4862385/