excluir automaticamente a linha objeto pai quando todas as crianças se foram

votos
0

No PostgreSQL 8.3 banco de dados Eu tenho tabela reservas tabela de referência booking_transactions pelo ID. De modo que cada reserva pertence a uma única transação. É possível apagar as reservas do banco de dados.

Como posso ter certeza de que um booking_transactions linha é automaticamente excluído quando todas as reservas fazendo referência a ele se foi?

Eu suspeito que um ON DELETE reservas gatilho não vai funcionar, como deve consultar as outras linhas da tabela de reservas.

Publicado 15/10/2008 em 10:57
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Gatilho em "reservas" deve funcionar não há nenhum problema para consultar a tabela em si na função de gatilho.

Respondeu 15/10/2008 em 11:24
fonte usuário

votos
0

A seguinte função de gatilho plpgsql faz o trabalho

BEGIN
DELETE FROM
    booking_transactions bt
WHERE
    bt.id = OLD.transaction_id AND
    NOT EXISTS (SELECT 1 FROM bookings b WHERE b.transaction_id = bt.id);

RETURN OLD;
END;

Ele deve ser executado depois reservas DELETE

Respondeu 15/10/2008 em 12:30
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more