Maison >base de données >tutoriel mysql >Comment puis-je ajouter une colonne d'identité à une table SQL Server existante avec des données ?

Comment puis-je ajouter une colonne d'identité à une table SQL Server existante avec des données ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-22 23:01:11479parcourir

How Can I Add an Identity Column to an Existing SQL Server Table with Data?

Ajout de colonnes d'identité aux tables SQL Server existantes

Problème : Vous devez ajouter une colonne d'identité à une table SQL Server qui contient déjà des données. La modification directe d'une colonne existante pour devenir une identité n'est pas prise en charge.

Solutions : Deux méthodes existent pour y parvenir :

Méthode 1 : Créer une nouvelle table

Cette méthode préserve les données existantes. Une nouvelle table est créée avec la colonne d'identité, les données sont copiées et l'ancienne table est remplacée.

T-SQL :

<code class="language-sql">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'</code>

Méthode 2 : ajouter une nouvelle colonne d'identité

Cette approche ajoute une nouvelle colonne d'identité, supprime l'ancienne clé primaire et renomme la nouvelle colonne. Remarque : Les données existantes dans la colonne de clé primaire d'origine ne seront pas conservées.

T-SQL :

<code class="language-sql">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'</code>

Considérations importantes :

  • Sauvegardes : Sauvegardez toujours vos données avant d'effectuer des modifications de schéma.
  • Transactions : Pensez à envelopper ces opérations dans une transaction pour l'atomicité.
  • Test : Testez minutieusement ces modifications dans un environnement de développement ou de test avant de les appliquer à la production.
  • Perte de données : La méthode 2 entraîne une perte de données dans la colonne de clé primaire d'origine. Choisissez la méthode appropriée en fonction de vos besoins en données.

Ces informations fournissent une explication plus concise et simplifiée du texte original, tout en conservant le sens principal et en préservant l'image.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn