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

PostgreSQL Discussion :

échec ALTER TABLE


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut échec ALTER TABLE
    Bonjour,

    Je suis passé à postgresql depuis qlq temps, et me voilà confronté à un premier soucis : Je veux changer le type d'un champ de type "character varying(22)" en "character varying(255)".
    J'ai donc voulu exécuter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE lestruc ALTER COLUMN truc_id TYPE character varying(255);
    ce qui me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR:  syntax error at or near "TYPE" at character 40
    J'ai testé d'autres syntaxes, toutes ont échouées. J'ai aussi vidée la table et vérifié s'il n'y avait pas d'éventuelles constraints mais non...

    Help please

    merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Par défaut
    La requête que tu donnes est bonne... pour les versions 8.0 et ultérieures. Donc, si tu es sur une 7.4, ce que je suppose, tu aboutis au message d'erreur que tu as reçu.

    Le seul moyen est donc d'ajouter la colonne avec le bon type, de mettre à jour la valeur à la valeur de l'ancienne colonne, puis de supprimer l'ancienne colonne. Le tout dans une transaction pour éviter que les autres utilisateurs ne fassent de bêtises

    Un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BEGIN;
    ALTER TABLE lestruc ADD COLUMN truc_id_new character varying(255);
    UPDATE lestruc SET truc_id_new=truc_id;
    ALTER TABLE lestruc DROP COLUMN truc_id;
    ALTER TABLE lestruc RENAME COLUMN truc_id_new TO truc_id;
    END;
    Évidemment, ce code doit être modifié pour gérer des contraintes que j'ignorerais mais l'idée est là.

  3. #3
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Je craignais qu'on me réponde ceci...
    Merci!

Discussions similaires

  1. Renommer une colonne avec ALTER TABLE...
    Par David.V dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/07/2004, 10h33
  2. [débutant] conseils sur contraintes et alter table
    Par maysa dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 26/05/2004, 09h03
  3. [Delphi 2] Alter Table
    Par Form_Load dans le forum Bases de données
    Réponses: 11
    Dernier message: 23/04/2004, 14h26
  4. Probleme 'ALTER TABLE' et 'FOREIGN KEY'
    Par maahta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/09/2003, 14h25
  5. Alter table qui ne passe...
    Par Gential dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/06/2003, 17h48

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