Der er ingen enkelt kommando tilgang. Du kan selvfølgelig skrive flere kommandoer for RENAME
af dig selv, men lad mig inducere nogle forbedringer:) Som jeg sagde i dette svar
I dit tilfælde ville det være:
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;
Det vil give dig et sæt strenge, som er SQL-kommandoer som:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Der er ingen grund til at bruge table_schema
i WHERE
klausul, hvis din tabel er public
skema. Husk også at bruge funktionen quote_ident()
-- læs mit originale svar for mere forklaring.
Rediger:
Jeg har ændret min forespørgsel, så den nu fungerer for alle kolonner med navn, der begynder med understregning _
. Fordi understregning er specialtegn i SQL-mønstermatching, skal vi undslippe det (ved at bruge \
) for rent faktisk at finde det.