Neexistuje žádný jednotný příkazový přístup. Samozřejmě můžete zadat více příkazů pro RENAME
od vás, ale dovolte mi uvést určité zlepšení:) Jak jsem řekl v této odpovědi
Ve vašem případě by to bylo:
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 vám dá sadu řetězců, které jsou příkazy SQL jako:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Není třeba používat table_schema
v WHERE
klauzule, pokud je tabulka public
schéma. Nezapomeňte také použít funkci quote_ident()
-- přečtěte si mou původní odpověď pro další vysvětlení.
Upravit:
Změnil jsem svůj dotaz, takže nyní funguje pro všechny sloupce s názvem začínajícím podtržítkem _
. Protože podtržítko je speciální znak při porovnávání vzorů SQL, musíme jej escapovat (pomocí \
), abyste jej skutečně našli.