Satisfazer condiçao para deletar registros em uma classe
12/09/2023
0
Seguinte: tenho 2 classes sendo:
1 contas
1 itens_de_contas.
Na classe itens_de_contas, tenho um campo informando se o registro esta pendente de pagamento ou liquidado.
Problema:
Preciso que os registros lancados no itens_de_contas, sejam bloqueados para deleção caso houver um campo informando liquididado.
Exemplo:
No contas tenho um valor de 600,00 para pagamento em 3 parcelas.
Supondo-se que a primeira parcela no valor de 200,00 esteja com o campo status "LIQUIDADO" e o usuario por ventura resolva deletar o registro de contas e todos os lançamentos no itens_de_contas. Como fazer para bloquear essa exclusão?
Mais especificamente poderia ser assim, somente deletar tudo caso os registros do itens_de_contas fossem apenas "PENDENTES".
Att
Antonio Cesar
Antonio Pazebao
Posts
15/09/2023
Arthur Heinrich
Ao executar um delete na tabela "contas", a trigger faria uma busca na tabela "itens_de_contas" em busca de 1 registro com status 'LIQUIDADO' ou diferente de 'PENDENTE'.
Se encontrar algum item, aborta a transação.
Você também pode implementar algo nas classes, para evitar o acesso ao banco, mas isso não garante que todos os pontos do seu sistema estarão utilizando a classe, nem mesmo que um usuário não fará a exclusão manualmente.
18/09/2023
Antonio Pazebao
Ao executar um delete na tabela "contas", a trigger faria uma busca na tabela "itens_de_contas" em busca de 1 registro com status 'LIQUIDADO' ou diferente de 'PENDENTE'.
Se encontrar algum item, aborta a transação.
Você também pode implementar algo nas classes, para evitar o acesso ao banco, mas isso não garante que todos os pontos do seu sistema estarão utilizando a classe, nem mesmo que um usuário não fará a exclusão manualmente.
Boa noite!! Como implemento essa triger ? ????
Att
Antonio
19/09/2023
Arthur Heinrich
DELIMITER $$ CREATE TRIGGER DeviceCatalog_PreventDeletion BEFORE DELETE ON DeviceCatalog FOR EACH ROW BEGIN IF exists(select 1 from itens_de_contas where itens_de_contas.conta_id = old.conta_id and itens_de_contas.status <> 'PENDENTE') THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Itens de conta não pendentes encontrados!'; ROLLBACK; END IF; END $$ DELIMITER ;
19/09/2023
Arthur Heinrich
DELIMITER $$ CREATE TRIGGER contas_PreventDeletion BEFORE DELETE ON contas FOR EACH ROW BEGIN IF exists(select 1 from itens_de_contas where itens_de_contas.conta_id = old.conta_id and itens_de_contas.status <> 'PENDENTE') THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Itens de conta não pendentes encontrados!'; ROLLBACK; END IF; END $$ DELIMITER ;
Clique aqui para fazer login e interagir na Comunidade :)