Augmenter la taille du type de caractère variable dans postgres sans perte de données

Je dois augmenter la taille d’un champ de caractère (60) dans une table de firebase database postgres sans perte de données.

J’ai cette commande

alter table client_details alter column name set character varying(200); 

cette commande augmentera-t-elle la taille du champ de 60 à 200 sans perte de données?

En se référant à cette documentation, il n’y aurait pas de perte de données, alter column ne jette que les anciennes données dans de nouvelles données. Mais je ne pense pas que votre syntaxe est correcte, voir la documentation que j’ai mentionnée plus tôt. Je pense que vous devriez utiliser cette syntaxe:

ALTER Type de colonne [COLUMN] TYPE [expression utilisée]

Et comme note, ne serait-il pas plus simple de créer une table, de la remplir et de la tester 🙂

La requête correcte pour modifier la limite de type de données de la colonne particulière:

 ALTER TABLE client_details ALTER COLUMN name TYPE character varying(200); 

Oui. Mais il va réécrire cette table et la verrouiller exclusivement pour la durée de la réécriture – toute requête essayant d’accéder à cette table attendra la fin de la réécriture.

Pensez à modifier le type en texte et à utiliser la contrainte de vérification pour limiter la taille – le changement de contrainte ne réécrirait pas ou ne verrouillerait pas une table.

Modification de la taille de la colonne dans la version Postgresql 9.1

Pendant que la colonne fait passer la taille de varchar à des valeurs plus élevées, la table re write est requirejse pendant ce verrou qui sera conservé sur la table et la table utilisateur n’a pas access jusqu’à ce que la réécriture de la table soit terminée.

Nom de la table: – userdata Nom de la colonne: – acc_no

ALTER TABLE userdata ALTER COLUMN acc_no TYPE varchar (250);

À partir de PostgreSQL 9.2 Relase Notes E.15.3.4.2

L’augmentation de la limite de longueur pour une colonne varchar ou varbit ou la suppression totale de la limite ne nécessite plus de réécriture de table.

vous pouvez utiliser cette commande sql ci-dessous
ALTER TABLE client_details ALTER COLUMN name TYPE varchar(200)