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

SQL Oracle Discussion :

Modification le type d'une colonne de varchar à sequence d'entiers


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Points : 44
    Points
    44
    Par défaut Modification le type d'une colonne de varchar à sequence d'entiers
    Bonjour,

    SVP, j'ai table qui contient des données et j'aimerais changer le type d'une colonne(numero_wagon) en séquence d'entiers

    j'ai déclaré la séquence sur toad connecté à oracle et j'ai essayé de modifier la colonne sans perdre les données mais ça marche pas:

    create sequence s_num_wagon;


    ALTER TABLE T_MACHIN
    MODIFY numero_wagon number default nextval('s_num_wagon') NOT NULL


    ALTER TABLE T_MACHIN
    set numero_wagon SERIAL;


    pourriez vous me faire des propositions,

    merci d'avance

    Cdt,

  2. #2
    Membre actif Avatar de kore62
    Profil pro
    Inscrit en
    Août 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 222
    Points : 205
    Points
    205
    Par défaut
    moi je te propose ca...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table t_machin2 
    as select * from t_machin;
     
    truncate table t_machin2;
     
    alter table t_machin2
    modify numero_wagon number;
     
    insert into t_machin2 select to_number(numero_wagon),champ2,champ3 from t_machin;
    Ensuite tu regles ta sequence sur le max(numero_wagon)+1

    Tu fais pointer sur ta nouvelle table t_machin2

    tu renommes t_machin en t_machin_old
    tu renommes t_machin2 en t_machin et voila

    c'est fait.
    L'habitude est l'illusion d'un acquis imaginaire...

    Mes Compos Ziks Electros:http://fishbone2k.free.fr/technorulez/news.php?id=89

  3. #3
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Citation Envoyé par kore62 Voir le message
    moi je te propose ca...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table t_machin2 
    as select * from t_machin;
     
    truncate table t_machin2;
     
    alter table t_machin2
    modify numero_wagon number;
     
    insert into t_machin2 select to_number(numero_wagon),champ2,champ3 from t_machin;
    Ensuite tu regles ta sequence sur le max(numero_wagon)+1

    Tu fais pointer sur ta nouvelle table t_machin2

    tu renommes t_machin en t_machin_old
    tu renommes t_machin2 en t_machin et voila

    c'est fait.
    Attention, le truncate ne fonctionnera pas si la table contient une clé primaire référencées par des clés étrangères.

    De plus, pourquoi créer une nouvelle table ?

    Il est plus simple :
    • d'ajouter une nouvelle colonne (temporairement)
    • de mettre à jour la nouvelle colonne
    • supprimer la colonne initiale
    • la recréer avec le bon type
    • copier les valeurs de la colonne temporaire vers la nouvelle colonne
    • supprimer la colonne temporaire.
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  4. #4
    Membre actif Avatar de kore62
    Profil pro
    Inscrit en
    Août 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 222
    Points : 205
    Points
    205
    Par défaut
    C'est pas faux c'est une autre solution...

    J'ai oublié de préciser de désactiver la contrainte temporairement
    et de la reactiver aprés...

    Ta solution est surement meilleure
    L'habitude est l'illusion d'un acquis imaginaire...

    Mes Compos Ziks Electros:http://fishbone2k.free.fr/technorulez/news.php?id=89

Discussions similaires

  1. [SP-2010] Modification d'un type d'une colonne
    Par redmonster dans le forum SharePoint
    Réponses: 2
    Dernier message: 11/02/2012, 14h33
  2. modification le type d'une colonne
    Par coquero dans le forum Langage SQL
    Réponses: 1
    Dernier message: 11/04/2008, 10h13
  3. Changer le type d'une colonne
    Par Poisson59 dans le forum Oracle
    Réponses: 2
    Dernier message: 06/12/2005, 13h59
  4. [Débutant] Changer le type d'une colonne
    Par david71 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 08/11/2005, 11h26
  5. Modification en transact d'une colonne
    Par NoisetteProd dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 06/02/2004, 11h06

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