web-dev-qa-db-fra.com

Comment supprimer l'incrémentation automatique de la table dans SQL Server 2012

J'ai créé une table dans SQL Server 2012 avec la clé primaire comme incrémentation automatique. Mais comment supprimer cette propriété d'incrémentation automatique de la table à l'aide d'une requête SQL?

12
user3458120

Si vous devez conserver les données dans cette colonne, puis créez une nouvelle colonne sur la table qui est du même type (mais d'un nom différent), copiez les données de la colonne dont vous voulez vous débarrasser dans la nouvelle, déposez le ancienne colonne et renommer la nouvelle. Exemple complet:

CREATE TABLE test(col1 INT IDENTITY (1,1) NOT NULL, col2 VARCHAR(10) NULL);

ALTER TABLE test ADD col3 INT NULL;

UPDATE test SET col3 = col1;

ALTER TABLE test DROP COLUMN col1;

EXEC sp_rename 'dbo.test.col3', 'col1', 'COLUMN';
12
Steve Pettifer

Le moyen le plus simple serait:

  1. Ouvert SQL Server Management Studio.
  2. Recherchez Serveur> Base de données> Table.
  3. Cliquez avec le bouton droit sur le tableau> Sélectionner le design.
  4. Dans la fenêtre de conception, sélectionnez la colonne que vous souhaitez modifier.
  5. Dans le Column Properties Fenêtre, accédez à Identity Specification> Is Identity Et réglé sur No.
  6. Accédez au menu de la barre d'outils> Table Designer> Sélectionnez Generate Change Script...
  7. Walla, tu as le script demandé.

J'aime utiliser cette méthode pour obtenir des scripts, car elle me permet de générer des scripts, je ne sais pas comment composer à partir de zéro et ainsi apprendre et améliorer mes compétences ...

enter image description here

11
Avi Turner

S'il s'agit d'une colonne de clé primaire, vous devez d'abord supprimer le PK. S'il y a des tables qui y font référence, vous devrez alors supprimer ces FK pour pouvoir supprimer le PK. Après cela, ajoutez une autre colonne du même type, mettez-la à jour avec les valeurs de la colonne d'identité, supprimez la colonne d'identité, renommez la nouvelle colonne en quelque soit le nom de la colonne d'identité (avec sp_rename procédure), recréer le PK, recréer les FK, vérifier si tout s'est bien passé.

Je serais très prudent de le faire sur une base de données de production. Assurez-vous que personne ne peut accéder aux données pendant cette opération.

5
dean

J'ai beaucoup cherché pour trouver une solution simple pour supprimer l'incrémentation automatique car je devrais faire beaucoup de travail si je laisse tomber la colonne et la clé primaire qui était une clé étrangère sur une autre table où je devrais supprimer les données qui utilisent mon étranger ... enfin je me suis retrouvé avec une solution très simple qui m'a facilité la vie:

SET IDENTITY_INSERT <table_name> ON ;
2
Chris Sim

SET IDENTITY_INSERT [TABLE] OFF .. cela permet de supprimer l'incrémentation automatique à l'état désactivé .., de sorte que nous devons entrer la valeur dans cette colonne

1
Goutham Arul