Tidak ada pendekatan perintah tunggal. Jelas Anda bisa mengetik beberapa perintah untuk RENAME
sendiri, tetapi izinkan saya melakukan beberapa perbaikan :) Seperti yang saya katakan di jawaban ini
Dalam kasus Anda, itu akan menjadi:
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;
Itu akan memberi Anda serangkaian string yang merupakan perintah SQL seperti:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Tidak perlu menggunakan table_schema
di WHERE
klausa jika tabel Anda berada di public
skema. Ingat juga menggunakan fungsi quote_ident()
-- baca jawaban asli saya untuk penjelasan lebih lanjut.
Sunting:
Saya telah mengubah kueri saya sehingga sekarang berfungsi untuk semua kolom dengan nama yang dimulai dengan garis bawah _
. Karena garis bawah adalah karakter khusus dalam pencocokan pola SQL, kita harus menghindarinya (menggunakan \
) untuk benar-benar menemukannya.