web-dev-qa-db-fra.com

Renommer plusieurs colonnes en une seule instruction avec PostgreSQL

Est-il possible de renommer plusieurs colonnes en une seule instruction, quelque chose comme:

ALTER TABLE Users
    RENAME COLUMN userName TO user_name, 
    RENAME COLUMN realName TO real_name;
25
Rovanion

Non.

Alors que d'autres actions peuvent être combinées, ce n'est pas possible avec RENAME. Le manuel:

Toutes les formes de ALTER TABLE qui agissent sur une seule table, sauf RENAME, SET SCHEMA, ATTACH PARTITION, et DETACH PARTITION peut être combiné dans une liste de plusieurs modifications à appliquer ensemble.

Étant donné que RENAME est une opération minuscule sur un catalogue système, il n'y a aucun mal à exécuter plusieurs instructions. Faites-le en une seule transaction pour minimiser les frais généraux de verrouillage.

D'autres actions comme ALTER COLUMN ... SET TYPE sont potentiellement coûteux car ils peuvent avoir à réécrire la table entière. Avec de grandes tables, il serait sage d'en faire autant que possible dans une seule déclaration.

38
Erwin Brandstetter