Nie ma jednego podejścia do komendy. Oczywiście możesz wpisać wiele poleceń dla RENAME
sam, ale pozwól mi wprowadzić pewną poprawę:) Jak powiedziałem w tej odpowiedzi
W twoim przypadku byłoby to:
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;
To da ci zestaw ciągów, które są poleceniami SQL, takimi jak:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Nie ma potrzeby używania table_schema
w WHERE
klauzula, jeśli twoja tabela jest public
schemat. Pamiętaj też o użyciu funkcji quote_ident()
-- przeczytaj moją oryginalną odpowiedź, aby uzyskać więcej wyjaśnień.
Edycja:
Zmieniłem zapytanie, więc teraz działa dla wszystkich kolumn, których nazwa zaczyna się od podkreślenia _
. Ponieważ podkreślenie jest znakiem specjalnym w dopasowaniu wzorca SQL, musimy go zmienić (używając \
), aby go znaleźć.