ne fonctionne pas
ALTER TABLE ProductInProduct ALTER COLUMN Id KEY IDENTITY (1, 1);
Vérifier l'image
J'ai une table ProductInProduct veut que son identifiant soit unique.
Vous ne pouvez pas "convertir" une colonne existante en une colonne IDENTITY
- vous devrez créer une nouvelle colonne en tant que INT IDENTITY
:
ALTER TABLE ProductInProduct
ADD NewId INT IDENTITY (1, 1);
Mise à jour:
OK, donc il y a c'est un moyen de convertir une colonne existante en IDENTITY
. Si vous en avez absolument besoin - consultez cette réponse de Martin Smith avec tous les détails sanglants.
Vous ne pouvez pas modifier les colonnes existantes pour l'identité.
Vous avez 2 options,
Créer une nouvelle table avec identité et supprimer la table existante
Créer une nouvelle colonne avec identité et supprimer la colonne existante
Approche 1. (Nouveau tableau) Ici, vous pouvez conserver les valeurs de données existantes dans la colonne d'identité nouvellement créée.
CREATE TABLE dbo.Tmp_Names
(
Id int NOT NULL
IDENTITY(1, 1),
Name varchar(50) NULL
)
ON [PRIMARY]
go
SET IDENTITY_INSERT dbo.Tmp_Names ON
go
IF EXISTS ( SELECT *
FROM dbo.Names )
INSERT INTO dbo.Tmp_Names ( Id, Name )
SELECT Id,
Name
FROM dbo.Names TABLOCKX
go
SET IDENTITY_INSERT dbo.Tmp_Names OFF
go
DROP TABLE dbo.Names
go
Exec sp_rename 'Tmp_Names', 'Names'
Approche 2 (nouvelle colonne) Vous ne pouvez pas conserver les valeurs de données existantes dans la colonne d'identité nouvellement créée, la colonne d'identité contiendra la séquence de nombres.
Alter Table Names
Add Id_new Int Identity(1, 1)
Go
Alter Table Names Drop Column ID
Go
Exec sp_rename 'Names.Id_new', 'ID', 'Column'
Consultez le message suivant du forum Microsoft SQL Server pour plus de détails:
Vous ne définissez pas la valeur par défaut dans une table. Vous devez d'abord désactiver l'option "Valeur par défaut ou Liaison".