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 :

Changer col. identity ds 1table en gardant les dépendances


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Par défaut Changer col. identity ds 1table en gardant les dépendances
    Bonjour,

    J'ai une table avec plusieurs colonnes dont "ColId" est ma clef primaire et "ColSeed" est ma colonne identité incrémentée. Ma clef primaire ("ColId") est générée a partir de "ColSeed".
    Aujourd'hui, je n'ai plus besoin de ColSeed et je voudrais que ColId devienne ma colonne identité.
    Si je change ma colonne identity dans "Enterprise Manager", il détruit la table et la recrée. Ma table a donc perdu toutes ses dépendances.
    Auriez-vous une solution pour pourvoir garder mes dépendances (MS sql 2000) ?

    Merci d'avance,

    J.

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    et bienvenu(e)
    tu as essayé en utilisant ALTER TABLE sur ta table :
    PS : quelle idée d'avoir 2 colonnes pour l'id

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Par défaut
    Merci.
    C'est une longue histoire. Le ColId était généré avec le numéro du serveur pour régler un problème de réplication entre plusieurs serveurs. Pas idéal, je sais...

    Est ce que je peux faire un alter table pour changer l'identity ? (mais cette sentence ne fonctionne pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE MaTable ColId INT IDENTITY (1, 1) NOT NULL
    Je pense que le moyen c'est de droper ma colonne et de la recréer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE MaTable DROP COLUMN ColId
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE MaTable add COLUMN ColId INT identity (1,1)
    Mais je ne sais pas si je ne perds pas des dépendances au niveau de ma colonne?

    J.

  4. #4
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    t'as essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE MaTable ALTER COLUMN ColId INT IDENTITY (1, 1) NOT NULL
    :

  5. #5
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Citation Envoyé par trotters213
    t'as essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE MaTable ALTER COLUMN ColId INT IDENTITY (1, 1) NOT NULL
    :
    Et que va t il se passer des données contenues dans cette colonne là?

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Par défaut
    J'ai le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Server: Msg 156, Level 15, State 1, Line 1
    Incorrect syntax near the keyword 'IDENTITY'.
    En ce qui concerne les données, ce n'est pas trop grave.
    En fait, je vais vider la table et refaire une insertion de toutes les lignes.
    J'aimerais que ColId soit recalculé (1,2,3,...) et que ColSeed soit une colonne "calculé" à partir de ColId (ColSeed = ColId). Je peux pas supprimer ColSeed car elle doit être surement référencée quelque part. Mais je n'en ai plus besoin.

  7. #7
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    mais attend si tu t'en fouts des données à y être tu peux faire un DROP et recréer ta colonne, je pense que ça sera toujours mieux (et plus simple).
    Pour les dépendances tu les recrée au cas où après avoir remis ta colonne en IDENTITY, si elle existe encore tu le sauras, sinon elle devrais se créer.

  8. #8
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Par défaut
    Ok. Est ce qu'il existe une commande pour regénérer les dépendances et mettre à jour la table système "sysdepends" avec la nouvelle colonne créée ?

  9. #9
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    regarde ici ça peut peut-être t'aider.

  10. #10
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Par défaut
    Intéressant, mais les propriétés "CASCADE" ou "RESTRICT" servent juste à éviter de détruire les dépendances ou justement de les détruirent en cascade. Ce qu'il me faudrait c'est un transfert des dépendances sur la nouvelle colonne.

    En créant 2 nouvelles colonnes et en supprimant les anciennes, je n'optiens pas d'erreur en faisant un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC CHECKCATALOG ('MaTable')
    Donc normalement ça devrait être bon.
    Merci beaucoup pour l'aide!!!

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

Discussions similaires

  1. [PPT-2007] Changer de modèle en gardant les animations
    Par alexstain dans le forum Powerpoint
    Réponses: 0
    Dernier message: 01/10/2012, 13h53
  2. Réponses: 0
    Dernier message: 23/07/2010, 15h42
  3. changer la couleur de mon Form1 toutes les secondes
    Par stacker_junior dans le forum C++Builder
    Réponses: 9
    Dernier message: 10/05/2006, 19h36
  4. Réponses: 2
    Dernier message: 03/05/2006, 14h41
  5. [Info]Copie un code java en gardant les couleur des syntaxes
    Par Thzith dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 17/01/2006, 20h51

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