Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je possède une table contenant beaucoup de données.
Les données d'une colonne sont de type bit(1), les valeurs sont donc 0 ou 1.
Je souhaiterai modifier le type bit(1) en booléens : 0 => false et 1 => true.
J'ai essayé la requête suivante :
ALTER TABLE "ma_table" ALTER COLUMN "ma_colonne" TYPE boolean USING "ma_colonne"::boolean;
J'obtiens l'erreur suivante :
ERREUR: ne peut pas convertir le type bit en boolean
Je ne connais pas bien la clause USING...
Existe-t-il un moyen pour modifier le type de ma colonne ?
Merci d'avance.
Hors ligne
S'il suffisait d'une simple conversion, il l'aurait fait lui-même. Non, il faut lui indiquer la méthode pour convertir le type bit(1) en booléen. Ceci devrait mieux fonctionner :
alter table ma_table alter column ma_colonne type boolean using ma_colonne::integer=1;
Guillaume.
Hors ligne
Ok merci beaucoup. Ça fonctionne.
Hors ligne
Bonjour,
suite à un import de fichier texte, j'ai une colonne vide appelée "Numero_carte" de type text dans ma table "CARTE101". J'ai renommé la colonne "Numero_carte" en "Id_carte".Je veux maintenant la transformer en type serial (auto incrémentation) mais je n'y arrive pas. J'ai tout de même utilisé la requête suivante:
ALTER TABLE "CARTE101"
ALTER COLUMN "Id_carte" serial;
Et j'obtiens comme réponse:
ERROR: syntax error at or near "serial"
LIGNE 2 : ALTER COLUMN "Id_carte" serial;
^
Pourriez-vous me donner un conseil pouvant me permettre de faire ce changement?
Bien cordialement,
Hors ligne
serial n'est pas un type réel. C'est juste une aide lorsque vous créez une table pour ajouter une séquence et ajouter une valeur par défaut sur la colonne associée pour que sa valeur soit auto-incrémentée.
Autrement dit, serial est utilisable dans un CREATE TABLE mais pas ailleurs.
Dans votre cas, il faut créer la séquence puis modifier la valeur par défaut de la colonne avec un nextval de la séquence.
Guillaume.
Hors ligne
Pages : 1