Il n'y a pas d'approche de commande unique. Évidemment, vous pouvez taper plusieurs commandes pour RENAME
par vous-même, mais permettez-moi d'introduire une amélioration :) Comme je l'ai dit dans cette réponse
Dans votre cas, ce serait :
SELECT
'ALTER TABLE ' || tab_name || ' RENAME COLUMN '
|| quote_ident(column_name) || ' TO '
|| quote_ident( '_1' || column_name) || ';'
FROM (
SELECT
quote_ident(table_schema) || '.' || quote_ident(table_name) as tab_name,
column_name
FROM information_schema.columns
WHERE
table_schema = 'schema_name'
AND table_name = 'table_name'
AND column_name LIKE '\_%'
) sub;
Cela vous donnera un ensemble de chaînes qui sont des commandes SQL comme :
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Il n'est pas nécessaire d'utiliser table_schema
dans WHERE
clause si votre table est en public
schéma. N'oubliez pas d'utiliser la fonction quote_ident()
-- lisez ma réponse originale pour plus d'explications.
Modifier :
J'ai modifié ma requête, elle fonctionne donc maintenant pour toutes les colonnes dont le nom commence par un trait de soulignement _
. Parce que le trait de soulignement est un caractère spécial dans la correspondance de modèle SQL, nous devons l'échapper (en utilisant \
) pour le trouver réellement.