Solução alternativa do gatilho do MySQL para atualizar a mesma tabela
O MySQL restringe inerentemente a atualização de linhas dos gatilhos na mesma tabela à qual estão atribuídos, evitando chamadas recursivas . Apesar dessa limitação, existe uma solução alternativa viável.
Solução alternativa sugerida
Em vez de atualizar diretamente as linhas em um gatilho, aproveite um procedimento armazenado que executa a lógica desejada. Este método separa a tarefa de atualização de linha do gatilho e permite contornar a restrição.
Exemplo
Considere o seguinte cenário:
CREATE TABLE MyTable (
id INT PRIMARY KEY,
attribute VARCHAR(255)
);
-- Trigger to insert a row into MyTable for each new parent product record
CREATE TRIGGER my_trigger AFTER INSERT ON Products
FOR EACH ROW
BEGIN
-- Issue SQL statement to call a stored procedure that performs the insert
CALL insert_attribute(NEW.id, 'Value');
END;
No exemplo acima, o gatilho my_trigger chama o procedimento armazenado insert_attribute para inserir uma linha em MyTable quando um novo registro é inserido na tabela Products, imitando efetivamente a funcionalidade de uma atualização direta de linha dentro do gatilho.
Considerações adicionais
Embora esta solução alternativa sirva como uma solução funcional, é importante observar que ela difere de um gatilho tradicional em termos de desempenho e capacidade de manutenção. Os procedimentos armazenados podem introduzir sobrecarga e complexidade adicionais ao sistema de banco de dados em comparação com atualizações de gatilho direto.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3