web-dev-qa-db-fra.com

Requête PostgreSQL pour renommer et changer le type de colonne avec une seule requête

Dans PostgreSQL si j'ai besoin de renommer et de changer le type de données de la colonne, je devrais exécuter deux requêtes distinctes pour le faire.

Renommer:

ALTER TABLE <tablename> RENAME <oldcolumn> TO <newcolumn> 

et pour changer le type de colonne:

ALTER TABLE <tablename> ALTER COLUMN <columnname> <columntype>.

Mais existe-t-il un moyen de faire ces deux travaux avec une requête unique, comme dans la requête MySQL suivante:

ALTER TABLE <tableName> CHANGE COLUMN <oldcolumnname> <newcolumnname> <newtype>
45
taufique

Dans PostgreSQL, ALTER TABLE peut prendre une série d’opérations. Alors:

ALTER TABLE <tablename> RENAME <oldcolumn> TO <newcolumn>;
ALTER TABLE <tablename> ALTER COLUMN <columnname> TYPE <newtype>;

est le même que

ALTER TABLE <tablename> 
  ALTER COLUMN <columnname> TYPE <newtype>
  RENAME <oldcolumn> TO <newcolumn>;

Cependant ... pourquoi? Le nom renommé IIRC ne provoquera pas une analyse complète de la table. Il n’ya donc aucun avantage à se contenter de faire les deux instructions séparément, en une seule transaction. Quel problème essayez-vous réellement de résoudre avec cela?

80
Craig Ringer

PostgreSQL: Modifiez le nom de la colonne et le type de données de la table:

ALTER TABLE <TableName> 
   ALTER [ COLUMN ] column [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
  RENAME [ COLUMN ] column TO new_column;

Voir ALTER TABLE .

2
jainvikram444