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

Développement SQL Server Discussion :

Activation du Compteur d'identité


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 123
    Points : 77
    Points
    77
    Par défaut Activation du Compteur d'identité
    Bonjour à tous,

    Je suis sous SQL Server 2005 et j'ai une table Test avec IdTest qui est la clé primaire avec l'identité non activée donc à chaque fois que j'insère une ligne dans ma table je dois spécifier la valeur de la clé primaire à insérer.

    Maintenant je souhaite activer l'identité sachant que la table contient quelques lignes en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DECLARE @idmax INT
    SELECT @idmax = (SELECT MAX(IdTest) FROM Test)
     
    ALTER TABLE Test
    ALTER COLUMN IdTest INT IDENTITY(ISNULL(@idmax,1),1)
    ensuite j'ai ce message d'erreur : Syntaxe incorrecte vers le mot clé 'identity'.

    Est-ce que c'est possible de faire ça en T-SQL ?

    Si oui, avez-vous une idée sur la bonne syntaxe à utiliser?

    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 774
    Points : 52 744
    Points
    52 744
    Billets dans le blog
    5
    Par défaut
    Vous ne pouvez pas rajouter le compteur IDENTITY à une colonne existante d'une table. Pour faire cela il faut soit ajouter une nouvelle colonne, soit reconstruire la table.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Il n'est possible de mettre de passer une colonne comme d'identité si celle-ci est déjà créée.
    Ce que vous pouvez faire :

    - copier la structure de votre table source dans une autre table, cible, en spécifiant la colonne que vous souhaitez avoir comme compteur d'identité
    - copier les données de la table source dans la table cible
    - supprimer la table source
    - renommer la table cible avec le nom de l'ex-table source (avec la procédure stockée système sp_rename).

    Cette démarche est celle adoptée par SQL Server Management Studio lorsque vous faites :
    - Clic droit sur la table / Création
    - Dans le volet inférieur, ouvrir la node "Spécification du compteur"
    - Propriété "est d'indentité" : passez à "Oui"
    - Sauvez la structure de la table.

    C'est rapide si :

    - votre colonne d'identité n'est pas la clé primaire de votre table
    - votre colonne d'identité est la clé primaire de votre table et elle n'est pas ou peu référencée par des contraintes de clé étrangère
    - votre table contient peu de lignes

    @++

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 123
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Il n'est possible de mettre de passer une colonne comme d'identité si celle-ci est déjà créée.
    Ce que vous pouvez faire :

    - copier la structure de votre table source dans une autre table, cible, en spécifiant la colonne que vous souhaitez avoir comme compteur d'identité
    - copier les données de la table source dans la table cible
    - supprimer la table source
    - renommer la table cible avec le nom de l'ex-table source (avec la procédure stockée système sp_rename).

    Cette démarche est celle adoptée par SQL Server Management Studio lorsque vous faites :
    - Clic droit sur la table / Création
    - Dans le volet inférieur, ouvrir la node "Spécification du compteur"
    - Propriété "est d'indentité" : passez à "Oui"
    - Sauvez la structure de la table.

    C'est rapide si :

    - votre colonne d'identité n'est pas la clé primaire de votre table
    - votre colonne d'identité est la clé primaire de votre table et elle n'est pas ou peu référencée par des contraintes de clé étrangère
    - votre table contient peu de lignes

    @++
    Justement ma colonne d'identité est la clé primaire de ma table et j'ai des contraintes de clés étrangères dans d'autres tables qui référencent cette clé primaire.

    Ma table [Test] contient quelques lignes.

    Je peux le faire en mode création, spécification du compteur à "OUI" ensuite je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DECLARE @id INT
    SET @id = (SELECT MAX(IdTest) from Test)
    DBCC CHECKIDENT('Test', RESEED, @id)
    et ça fonctionne mais vu que nous sommes deux équipes à travailler sur la même base de données, chaque modification de la base est faite avec des scripts T-SQL (horodatés) pour pouvoir reconstruire la base de données au cas où...

    c'est pour ça que je cherchais comment le faire en T-SQL.

    Si SQLpro me dit que c'est pas possible (pour l'instant) de le faire en T-SQL alors je crois que j'ai la réponse à ma question!!!

    Merci pour votre aide et si jamais c'est possible un jour n'oubliez pas de mettre à jour cette discussion .

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Regardez donc la spécification de la commande ALTER TABLE, vous ne trouverez pas IDENTITY.
    C'est pour cela que je vous ai dit :

    Il n'est possible de mettre de passer une colonne comme d'identité si celle-ci est déjà créée.
    @++

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

Discussions similaires

  1. activer un compteur jour+1 sur un pps
    Par crazyone dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 14/06/2017, 12h17
  2. [AC-2003] Compteur dans Formulaire Activé UNIQUEMENT sur demande
    Par piwa6291 dans le forum IHM
    Réponses: 5
    Dernier message: 21/11/2012, 16h24
  3. problème d'activation du diskperf (Compteurs de Perfomances)
    Par zicoP dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 06/10/2006, 14h53
  4. Tester connexion Internet active sous Windows
    Par Altau dans le forum Développement
    Réponses: 3
    Dernier message: 12/08/2002, 12h43
  5. [Kylix] Clé d'activation
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 27/03/2002, 23h19

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