Grupo, tenho uma trigger que é disparada no 'after delete' da tabela 'filho'. Esta tabela 'filho' tem relação com a tabela 'pai', sendo que a referencia é 'on delete cascade'.
Quando eu excluo um registro da tabela 'pai', este chama a deleção de cada registro da tabela 'filho', que respectivamente vai executar sua trigger, o problema é que nesta trigger eu *preciso* dos dados do registro da tabela 'pai', mas eles já não estão mais lá! Ou seja, o registro da tabela 'pai' já está excluído antes mesmo dos registros da tabela 'filho' estarem deletados. O PostgreSQL não estaria quebrando a integridade referencial tendo este comportamento? Alguém já passou por algo semelhante? Existe algum parâmetro para isto não acontecer? Segue abaixo script de exemplo. Obs: trocando o 'after delete' por 'before delete' o resultado eh o mesmo. Obrigado, Everton begin; create procedural language plpgsql; create table pai (idpai integer primary key, descricao varchar(20)); create table filho (idpai integer references pai on delete cascade, nome varchar(30)); -- insert into pai values (1, 'Controle de versão'); insert into pai values (2, 'Linguagem'); insert into filho values (1, 'CVS'); insert into filho values (1, 'SubVersion'); insert into filho values (2, 'PHP'); -- select * from pai; select * from filho; --trigger create or replace function f_filho_a1() returns trigger as $_$ declare l_desc pai.descricao%TYPE; begin raise notice 'old idpai (ok): %', OLD.idpai; raise notice 'old nome (ok): %', OLD.nome; select into l_desc descricao from pai where idpai = OLD.idpai; raise notice 'pai descricao (problema! está mostrando <NULL>): %', l_desc; return OLD; end $_$ language plpgsql; create trigger tr_filho_a1 after delete on filho for each row execute procedure f_filho_a1(); --aqui vai exibir dados de dentro da trigger delete from pai where idpai = 1; -- rollback; _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios
