Olá Pessoal, Envie um script de um SUPOSTO BUG do postgres na lista de BUGS do postgres. Tom Lane me respondeu que isso é normal, porque eu estou destruindo o registro antes do DELETE. Eu particularmente não concordo porque eu acho que a integridade sempre deveria ser preservada mesmo em um erro de programação.Não concordo em ficar orfãos os registros. Pergunto se voçês concordam com isso e o que acham ? link para resposta do TOM LANE: http://archives.postgresql.org/pgsql-bugs/2012-03/msg00108.php Muito obrigado a todos. Segue abaixo o SCRIPT. ----------------------------------------------------------------------------------------------------------- create table mestre (chave serial primary key, descricao varchar(50)); create table detalhe (chave serial primary key, mestre integer references mestre(chave) ON DELETE CASCADE, valor numeric); CREATE OR REPLACE FUNCTION ftrig_detalhe() RETURNS trigger AS$BODY$begin return null;end;$BODY$ LANGUAGE 'plpgsql' VOLATILE; insert into mestre (chave, descricao) values (1, 'TESTE');insert into detalhe (chave, mestre, valor) values (1, 1, 10);select * from detalhe d left join mestre m on m.chave = d.mestre;delete from mestre where chave = 1;select * from detalhe d left join mestre m on m.chave = d.mestre; CREATE TRIGGER tdetalhe before DELETE ON detalhe FOR EACH ROW EXECUTE PROCEDURE ftrig_detalhe(); insert into mestre (chave, descricao) values (1, 'TESTE');insert into detalhe (chave, mestre, valor) values (1, 1, 10);select * from detalhe d left join mestre m on m.chave = d.mestre;delete from mestre where chave = 1;select * from detalhe d left join mestre m on m.chave = d.mestre; --------------------------------------------------------------------------------------------------------
Claudio Oliveira http://www.msisolucoes.com.br
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
