Tenho várias tabelas com exatamente a mesma estrutura e preciso atualizar um valor em todas as tabelas.
Para isso, tentei construir o seguinte script:
DO
$do$
DECLARE
i pg_tables%rowtype;
BEGIN
FOR i IN SELECT * FROM pg_catalog.pg_tables where schemaname like 'public' and tablename like '%_knex_migrations'
LOOP
UPDATE i.tablename SET name = replace(name, '.js', '.ts');
END LOOP;
END
$do$;
Pude ver que i.tablename
tem o valor correto (inseri em uma tabela tmp para verificar), mas a atualização falha.
name: error
length: 223
severity: ERROR
code: 42P01
internalPosition: 8
internalQuery: UPDATE i."tablename" SET name = replace(name, '.js', '.ts')
where: PL/pgSQL function inline_code_block line 7 at SQL statement
file: parse_relation.c
line: 965
routine: parserOpenTable
Apenas plugin i.tablename
na UPDATE
declaração não funciona.
Existe uma maneira de fazê-lo funcionar? Ou uma maneira mais fácil de atualizar todas as tabelas de uma só vez?