Tenho um Microsoft SQL Server com uma tabela. Há um gatilho que dispara se uma linha for inserida na tabela. O sistema está ativo, ou seja, linhas são constantemente inseridas na tabela e o gatilho dispara o tempo todo.
Quero alterar o gatilho. O gatilho é o gargalo do sistema, e há uma chance muito alta de que ele esteja sendo executado/tenha iniciado uma transação ao emitir a consulta para alterá-lo. É seguro alterar o gatilho nessa situação? Qual é a pior coisa que pode acontecer? Presumo que um gatilho em processo terminará com a lógica antiga, e as execuções futuras usarão a nova lógica, mas como o sistema está em produção (sem uma boa maneira de testá-lo), preciso ter certeza.
Seria possível interromper o processo que está inserindo linhas na tabela, mas prefiro não interrompê-lo se não for necessário.
É seguro alterar o gatilho enquanto a tabela estiver sendo usada. Transações em andamento usarão a lógica de gatilho atual, novas transações usarão a nova lógica de gatilho depois que ela for aplicada.
No entanto, alterar o gatilho exigirá um bloqueio de esquema na tabela, o que significa que você pode causar bloqueio ao tentar alterar o gatilho. Eu definitivamente defenderia tentar encontrar um momento ocioso o máximo possível antes de tentar alterar o gatilho, para minimizar o impacto do bloqueio.