Я изучаю PostgreSQL и наткнулся на очень простое требование.Я хочу перебрать массив таблиц и обновить определенный столбец (имя столбца одинаково во всех этих таблицах).Моя идея состоит в том, чтобы хранить имена этих таблиц в массиве и использовать цикл for для итерации по каждой таблице и обновления столбца.
Это то, что я сделал до сих пор:
DO
$do$
DECLARE
old_value varchar := 'old_value';
new_value varchar := 'new_value';
affected_table_names TEXT[] := '{"table_1", "table_2"}';
BEGIN
FOREACH tableName IN affected_table_names
LOOP
update tableName
set column_name = old_value
where column_name = new_value;
END LOOP;
END
$do$;
Однако, когда я выполняю этот pgAdmin4, я получаю следующую ошибку:
ERROR: syntax error at or near "affected_table_names"
LINE 25: FOR tableName IN affected_table_names
^
********** Error **********
ERROR: syntax error at or near "affected_table_names"
SQL state: 42601
Character: 836
Я не уверен, что нужно сделать, чтобы исправить ошибку.Я знаю, что это синтаксическая ошибка, потому что здесь так сказано: https://www.postgresql.org/docs/8.1/errcodes-appendix.html
Может кто-нибудь указать мне правильное направление?