2
respostas

Atualização em Spring boot acionando Trigger

Estou tendo um problema em que estou tentando fazer um metodo que salva um certo dado, e assim que salva atualiza seu status salvo de 1 para 2, assim acionando a trigger dentro do banco salvando esse dado em outra tabela, porem essa trigger retorna carios results quando acionada e isso causa um erro : " com.microsoft.sqlserver.jdbc.SQLServerException: Um conjunto de resultados foi gerado para atualização. ".

Queria saber se existe como contornar isso, ou apenas ignorar essas responsas que a trigger gera quando acionada, ou se tem como eu mapear todos esses results gerados desse update.

2 respostas

Olá, Weverton!

Entendo que você está lidando com uma situação um pouco complicada. A exceção "com.microsoft.sqlserver.jdbc.SQLServerException: Um conjunto de resultados foi gerado para atualização." geralmente ocorre quando uma trigger no SQL Server retorna um conjunto de resultados, o que não é permitido quando a trigger é chamada a partir de um contexto onde um conjunto de resultados não pode ser retornado.

Uma possível solução para esse problema seria modificar a trigger para que ela não retorne um conjunto de resultados. Isso pode ser feito garantindo que todas as instruções SELECT na trigger estejam dentro de uma instrução INSERT, UPDATE, DELETE, ou que os resultados sejam descartados usando uma instrução SET.

Por exemplo, se a sua trigger atualmente tem uma instrução SELECT sem um INTO, você poderia modificá-la para algo assim:

CREATE TRIGGER sua_trigger
ON sua_tabela
AFTER UPDATE
AS
BEGIN
    DECLARE @resultado INT;
    SELECT @resultado = COUNT(*) FROM sua_tabela;
    -- O resultado do SELECT agora é armazenado na variável @resultado e não é retornado
END;

Se você não tem controle sobre a trigger e não pode modificá-la, outra opção seria capturar a exceção no seu código Java e tratá-la de acordo. No entanto, isso pode não ser ideal, pois a exceção indica que a trigger não está funcionando como deveria.

Por favor, note que essas são apenas sugestões e podem não resolver completamente o seu problema, pois dependem do contexto específico do seu código e da sua base de dados.

Espero ter ajudado e bons estudos!

Mas mesmo eu capturando a Exception ele ira realizar o processo de UPDATE da trigger?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software