2013/6/19 Wellington Openheimer <[email protected]> > Olá pessoal, > > Tenho o seguinte problema: > > Faço um select na tabela B na qual retorna dados. Depois faço um delete e > retorna 0 rows affected. Refaço o select e os dados ainda estão lá. > > Caso: > > A tabela B possui chave estrangeira para a tabela A. Esta chave está ON > DELETE CASCADE. Mas a tabela B possui uma Trigger BEFORE DELETE, na qual > não deixa deletar por um determinado motivo. >
Com certeza os dados que está tentando deletar estão nesse "determinado motivo"... Simples assim. Se realmente deveria/poderia deletá-los você deve: 1. Corrigir a trigger para aceitar o caso; 2. **ou**, caso seja a correção de um erro, em uma única transação, você deve desabilitar a trigger, deletar os registros, re-habilitar a trigger. Exemplo: BEGIN; ALTER TABLE foo DISABLE TRIGGER bar; DELETE FROM foo WHERE ...; ALTER TABLE foo ENABLE TRIGGER bar; COMMIT; (isso irá bloquear qualquer uso dessa tabela enquanto estiver executando essa operação) Olha que estranho, esse dado que estou tentando deletar não está na tabela > A(chave). Concluí que houve um delete na tabela A que não conseguiu deletar > por cascata na tabela B e agora travou os dados na tabela B. > > Não entendi, você está deletando na A ou na B? E afinal, a chave é da A pra B ou o contrário? Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
