Er is geen enkele commandobenadering. Uiteraard kun je meerdere commando's typen voor RENAME
door uzelf, maar laat me enige verbetering aanbrengen:) Zoals ik al zei in dit antwoord
In jouw geval zou dat zijn:
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;
Dat geeft je een reeks strings die SQL-commando's zijn zoals:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Het is niet nodig om table_schema
te gebruiken in WHERE
clausule als uw tabel zich in public
bevindt schema. Onthoud ook het gebruik van de functie quote_ident()
-- lees mijn oorspronkelijke antwoord voor meer uitleg.
Bewerken:
Ik heb mijn zoekopdracht gewijzigd, zodat deze nu werkt voor alle kolommen waarvan de naam begint met een onderstrepingsteken _
. Omdat onderstrepingsteken een speciaal teken is bij het zoeken naar SQL-patronen, moeten we het escapen (met behulp van \
) om het daadwerkelijk te vinden.