Det finns inget enskilt kommando. Självklart kan du skriva flera kommandon för RENAME
själv, men låt mig inducera en förbättring:) Som jag sa i det här svaret
I ditt fall skulle det vara:
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 ger dig en uppsättning strängar som är SQL-kommandon 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";
...
Du behöver inte använda table_schema
i WHERE
klausul om din tabell är public
schema. Kom också ihåg att använda funktionen quote_ident()
-- läs mitt ursprungliga svar för mer förklaring.
Redigera:
Jag har ändrat min fråga så nu fungerar den för alla kolumner med namn som börjar med understreck _
. Eftersom understreck är specialtecken i SQL-mönstermatchning måste vi undkomma det (med \
) för att faktiskt hitta den.