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 :

ALTER TABLE : diminuer taille d'une colonne


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut ALTER TABLE : diminuer taille d'une colonne
    la rubrique MLP_LIB fait actuellement 200 caractères

    ALTER TABLE TX_130 MODIFY MLP_LIB CHAR(191);

    entraine

    ERROR at line 1:
    ORA-01441: cannot decrease column length because some value is too big

    dois-je décharger la table, la deleter et la recharger ? ou il y a-t-il une manip
    plus économe ?

  2. #2
    Membre émérite Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Par défaut
    Citation Envoyé par HRS Voir le message
    la rubrique MLP_LIB fait actuellement 200 caractères

    ALTER TABLE TX_130 MODIFY MLP_LIB CHAR(191);

    entraine

    ERROR at line 1:
    ORA-01441: cannot decrease column length because some value is too big

    dois-je décharger la table, la deleter et la recharger ? ou il y a-t-il une manip
    plus économe ?
    La doc dit :
    A column whose maximum size is to be decreased must contain only NULL values.
    Action: Set all values in column to NULL before decreasing the maximum size.

    Mais c'est faux (en, tout cas en 10gr2).

    En fait tu as au moins une ligne dans la table qui ne satisfait pas ta demande de réduction de taille.
    Pour vérifier :
    select max(vsize(MLP_LIB)) from TX_130;
    Tu auras la taille max de ta colonne.
    Soit tu réduit la taille de la colonne à la taille max actuelle.
    Soit su veux absolument réduire la colonne à 191 et tu devras réduire (par un update) toutes les lignes dont la taille de la colonne excède 191 caractères.

    Rectificatif : ce que j'ai écris n'est valable que pour du VARCHAR2.
    Avec du CHAR tu dois en effet vider le contenu ou mettre à jour la colonne ainsi :
    passage de CHAR en VARCHAR2
    update MLP_LIB=rtrim(MLP_LIB,' ')
    vérification :
    select MLP_LIB,vsize(MLP_LIB),length(MLP_LIB) from TX_130;
    passage de varchar2 en char

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Sinon créer une colonne temporaire MLP_LIB2 = taille actuelle de MLP_LIB
    update MLP_LIB2 = MLP_LIB, MLP_LIB = NULL
    passer la modification de colonne
    réupdate à l'envers :update MLP_LIB = MLP_LIB2
    drop colonne temporaire DROP COLUMN MLP_LIB2

  4. #4
    Invité
    Invité(e)
    Par défaut
    identifie le nombre d'enregistrements qui pose problème.
    Si il n'y en a qu'une dizaine, c'est possible de les raccourcir à la main.
    S'il y en a un millier, il faut adopter une autre stratégie...

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/06/2015, 11h56
  2. elargir/diminuer la taille d'une colonne
    Par mouss4rs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/03/2009, 12h58
  3. [Oracle9i] Modification taille d'une colonne
    Par Jibees dans le forum Oracle
    Réponses: 14
    Dernier message: 05/08/2005, 12h25
  4. Réponses: 12
    Dernier message: 11/04/2005, 19h31
  5. [JTable] ajuster la taille d'une colonne à la taille du texte
    Par GETah dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 24/02/2005, 12h53

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