Archive

Archive for the ‘PL/pgSQL’ Category

Inserindo e atualizando várias tabelas ao mesmo tempo usando PL/pgSQL

Olá pessoal,

esses dias eu me deparei com um probleminha um pouco chato (como sempre), depois de adicionar umas tabelas novas no sistema e atualizar umas outras antigas, teria que efetuar o link entre elas com os dados legados… bom, pare resolver isso, achei por bem criar uma funçãozinho em PL/pgSQL (sim, estou usando o PostgreSQL) para me ajudar. 😉

Segue ai em baixo, um exemplo do que tive que fazer:


create or replace function my_function(table_row my_table) returns void as $$
delegate
    next_id integer := nextval('my_other_table_id_seq');
begin
    insert into my_other_table(id, name) values (next_id, table_row.name);
    update my_table set my_other_table_link = next_id where id = table_row.id;
end;
$$language plpgsql;

Depois de criada a função, basta executá-la:

select my_function(linha) from my_table linha where linha.id between 123 and 456 order by asc;

Essa chamada fará um loop executando a função criada para cada linha resultado da query.

Simples não? 😉

[]’s

Categorias:PL/pgSQL, PostgreSQL