IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Rajout de la propriété Identity sur un champ


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Points : 59
    Points
    59
    Par défaut Rajout de la propriété Identity sur un champ
    Bonjour,

    J'ai créé une table via script SQL.
    Je souhaite rajouter la propriété Identity sur la clef primaire.
    Mais sans avoir à recréer la table car elle contient déjà des données.

    Script de création (fonctionne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create table T_DataType (
       DataTypeID           int                  not null ,
       DataTypeName         varchar(128)         null,
       constraint PK_T_DataType primary key  (DataTypeID)
    )
    Script de mise à jour de la clef primaire (ne marche pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE dbo.T_AppType ALTER COLUMN DataTypeID IDENTITY (1,1)
    J'ai l'erreur suivante :
    Syntaxe incorrecte vers le mot clé 'IDENTITY'.

    Ou est ce que je me trompe dans la syntaxe ?

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Il n'y a pas de type de données dans ton ALTER, mais de toute manière, tu ne peux pas ajouter la propriété IDENTIY à une colonne existante. SEulement avec un ADD sur une nouvelle colonne.
    Le seul moyen est de passer par une table temporaire.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par rudib
    Bonjour,

    Il n'y a pas de type de données dans ton ALTER, mais de toute manière, tu ne peux pas ajouter la propriété IDENTIY à une colonne existante. SEulement avec un ADD sur une nouvelle colonne.
    Le seul moyen est de passer par une table temporaire.
    OK.
    Mais dans ce cas, comment garantir que je vais garder les mêmes clefs primaires ?
    Si pour ma tabe initiale (Id/libellé) j'ai :
    1 : Toto1
    2 : Toto2
    3 : Toto3
    5 : Toto4

    Sur ma table cible (Id/libellé toujours), je vais avoir ceci :
    1 : Toto1
    2 : Toto2
    3 : Toto3
    4 : Toto4

    Du coup, ma reprise de données n'est pas bonne.

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Garder les mêmes clés primaires ?? Quelle est la clé primaire actuelle, et comment comptes-tu la "perdre" ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Points : 59
    Points
    59
    Par défaut
    Les clefs primaires correspondent aux chiffres de mon exemple ci-dessus.
    Et le champ sur lequel je souhaite mettre le identity est précisemment la clef primaire.

    Dans l'exemple (cas d'école, je l'accorde) que j'ai donné dans mon précédent message, je perds donc la valeur initaile des clefs primaires. Non ?

  6. #6
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Ok,

    Tu crées une table temporaire avec la colonne de ta clé primaire avec l'option IDENTITY. Tu la remplis avec les valeurs de ta table, après avoir permis cet ajout grâce à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY_INSERT T_AppType ON
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY_INSERT T_AppType OFF
    et tu donnes le seed de l'IDENTITY au MAX de la valeur de ta colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC CHECKIDENT ('T_AppType', RESEED, 30)

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Points : 59
    Points
    59
    Par défaut
    OK
    Merci bcp Rudib pour ton aide.
    Je passe en résolu.
    Bon week-end !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR 2008] Utilisation de la propriété can growl sur un champ
    Par arnfi1987 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 05/12/2012, 09h34
  2. [ZF 1.10] Zend validate identical sur deux champs password
    Par kcin dans le forum Zend_Form
    Réponses: 6
    Dernier message: 30/11/2012, 21h22
  3. [1.x] Rajouter du javascript sur un champ dans un formulaire
    Par pyo666 dans le forum Symfony
    Réponses: 0
    Dernier message: 13/07/2010, 10h50
  4. Réponses: 4
    Dernier message: 12/08/2008, 12h20
  5. Réponses: 2
    Dernier message: 01/06/2007, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo