2011-06-12 7 views
1

Est-il possible de modifier le type de domaine et de changer le type en un nouveau type? J'ai une colonne en utilisant le domaine qui a un type VARCHAR (25) et souhaite augmenter la longueur à 150.Changer le type de changement de domaine

+2

Vous pouvez poser cette question sur http://DBA.stackexchange.com à la place. – Jonas

Répondre

1

Créer un nouveau domaine, modifier toutes les tables et supprimer l'ancien domaine.

1

Une façon serait de

  1. la mise hors ligne de base de données,
  2. vider le schéma sous forme de texte,
  3. modifier le texte, en changeant le type de domaine à varchar (150),
  4. puis enfin recharger le schéma à partir du texte .

C'est juste une esquisse. Pratiquez-vous dans un bac à sable avant de l'essayer sur votre base de données réelle.

1

Ce n'est pas possible, mais vous pourriez le rendre possible. En l'état actuel des choses, vous utilisez alias varchar (25) comme domaine.

varchar (25), varchar (50), varchar et text sont stockés de la même manière dans Postgres. La seule différence est le contrôle de longueur, qui ajoute des frais généraux sur les deux premiers. Maintenant, vous ne pouvez pas modifier le type d'un domaine, mais vous pouvez modifier ses contraintes - et mieux encore, placer les contraintes sur les domaines est l'une de ces «astuces» qui permettent de les modifier sans nécessiter de réécriture de table.

  1. créer un nouveau domaine, dire chaîne_courte, qui est un alias pour varchar avec un contrôle contrainte
  2. alter colonnes de la table applicable et définir leur type à ce nouveau domaine

De cette façon, Si vous avez des doutes et décidez de changer la longueur maximale à 40 ou 60 ou à 25, vous serez en mesure de le faire sans réécriture de table.