Bonjour,
merci Manuel pour cette solution autrement plus rapide que l'export -
import.
J'ai cependant détecté une bizarrerie; après avoir utilisé
ALTER TABLE "T1" ALTER COLUMN "Cp" VARCHAR_IGNORECASE
la table est bien modifiée, MAIS on trouve comme longueur 2147483647 (au
lieu de la longueur initiale).
J'ai fait une deuxième tentative avec
ALTER TABLE "T1" ALTER COLUMN "Cp" VARCHAR_IGNORECASE(size)
Là, tout est impeccable.
Pour info, "ALTER TABLE..." ne marche que si il n'y a pas de
"contraintes" sur la colonne
(ex. utilisée dans une vue)
Je viens de reproduire le phénomène sur une dB de test et cela se vérifie :
on peut introduire plus de caractères que permis par la taille originale
(de là à essayer d'atteinte la limite indiquée...)
Petit bug ? (suis sous Linux Mandriva 2007 / Ooo2.1)
A+,
Jean-Luc
Manuel NAUDIN a écrit :
Le 19/01/07, Thiebaut Jean-Luc<[EMAIL PROTECTED]> a écrit :
Bonjour,
Bonjour,
est-il possible de passer d'un type de champ
"Texte [VARCHAR]"
vers
"Texte [VARCHAR_IGNORECASE]"
de même longueur et sans perte de données ?
Pas directement apparemment :
oBase veut détruire le champ existant et recréer un champ de même nom
avec le nouveau type,
mais avec pertes de données.
Existe-t-il un truc, une méthode ?
je voudrais éviter de devoir détruire la table (problème de tables liées
entre-elles et de formulaires)
ou de devoir réimporter les données...
il va falloir utiliser des instructions sql.
Par Outils > SQL, exécuter :
ALTER TABLE "LaTable" ALTER COLUMN "LeChampVarchar" VARCHAR_IGNORECASE
puis
Affichage > Actualiser les tables.
Attention, quelques restrictions (ectrait doc hsqldb) :
ALTER TABLE <tablename> ALTER COLUMN <columnDefinition>;
This form of ALTER TABLE ALTER COLUMN accepts a columnDefinition as in
a CREATE TABLE command, with the following restrictions.
Restrictions
The column must be already be a PK column to accept an IDENTITY
definition.
If the column is already an IDENTITY column and there is no IDENTITY
definition, the existing IDENTITY attribute is removed.
The default expression will be that of the new definition, meaning an
existing default can be dropped by ommission, or a new default added.
The NOT NULL attribute will be that of the new definition (similar to
previous item).
Depending on the type of change, the table may have to be empty for
the command to work. It always works when the type of change is
possible in general and the individual existing values can all be
converted.
Merci de vos suggestions,
Jean-Luc
Manuel
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]