2010-09-21 3 views
1

J'ai la table dans SQL Server 2008. Elle a empId, qui est l'int de type. Ce n'est pas une identité pour le moment. Je veux écrire la requête (de sorte que je puisse maintenir l'enregistrement des changements dans DB) pour faire de cette colonnes comme colonne d'identité. Ce tableau ne contient aucune donnée actuellement.Requête SQL pour la clé d'identité sur la table

Répondre

3

Cela peut être fait mais pas facilement. Selon this article si vous faites cela par SSMS puis générer un script qui essentiellement:

  1. Création d'une structure de table similaire Example1, dites Tmp_Example1 avec colonne d'identité.
  2. Set identity_insert sur nouvelle table juste created.Step 3: Insérer toutes les valeurs de Example1 à Tmp_Example1
  3. Set IDENTITY_INSERT OFF sur Tmp_Example ..
  4. Goutte Example1 (Qu'est-ce qui se passe ... laissant tomber notre originale table ???)
  5. Renommez Tmp_Example1 en Exemple1. validation de la transaction

Si ce tableau ne dispose pas de données dans ce que vous dites, alors vous êtes probablement mieux faire juste cela par SSMS (étapes sont prévues dans l'article I Lien vers). Y a-t-il une raison pour laquelle vous voulez faire cela en utilisant SQL?

MISE À JOUR

Je lisais an article qu'un autre utilisateur affiché plus tôt et a trouvé ce qui semble beaucoup plus facile que ma méthode ci-dessus:

ALTER TABLE SOURCE_TB ADD ID_II INT IDENTITY(1,1) 
ALTER TABLE SOURCE_TB DROP COLUMN ID 
EXEC sp_rename 'SOURCE_TB.ID_II' ,'ID','COLUMN' 

Mais encore une fois, il est probablement plus logique de le faire ceci via SSMS. Bon à savoir cependant ...

+0

+1 bien un ............... –

+0

@Pranay, je lisais l'article que vous avez posté plus tôt et ils avaient le code que j'ai posté dans ma mise à jour qui semble fonctionner. Je pense que vous aviez quelque chose de différent dans votre solution? –

+0

Je suis d'accord avec cela, mais certains comment je veux mettre à jour la colonne existante. Je sais que cela n'aura aucun impact à suivre, mais. vouloir modifier purement table, et vouloir définir l'identité. c'est faux --Drop et ensuite recréer. Le serveur sql doit avoir la possibilité de changer la propriété de la colonne en tant qu'identité. –

1

Vous n'avez pas de données, donc script la table comme déposer et recréer. Le changement le champ en identité int Employeeid (1,1) non null. Puis recréer la table. Pas de problème pas de muss.

Questions connexes