Verificação de campos texto sem alteração

26/02/2018

0

Olá pessoal, tudo bem!?
Qual a Solução recomendada para uma situação dessas: existem 4 campos texto que precisam ser verificados se sofreram alteração. Esses campos texto irão receber em média 100 caracteres. Porém a trigger não captura as informações do DELETED e, dessa forma, não conseguimos comparar o INSERTED com o DELETED.

Estratégias que já foram testadas sem sucesso.

Estratégia 1 . Comparar INSERTED com DELETED:
Msg 311, Level 16, State 1, Procedure TRG_TGFCAB_MRA_001, Line 46
Não é possível usar colunas de text, ntext ou image nas tabelas 'inserted' e 'deleted'.


Estratégia 2 . Usar Instead Of:
Não salva a transação corrente e desconsidera as informações que foram editadas pelo usuário no formulário do Front end. (Essa regra é para apenas alguns campos, outros permite alterar)

Estratégia 3 . Usar COLUMNS_UPDATED():
Erro de estouro aritmético para o tipo int, valor =

Existe alguma solução para essa questão no SQL Server? no Oracle uma opção seria comparar por exemplo :NEW. COM :OLD.
Grato pela ajuda.

Essa dúvida foi gerada a partir de um comentário no [url:descricao=Curso de Administração de Banco de Dados com SQL Server]https://www.devmedia.com.br/curso/curso-sql-server/406[/url]
Gustavo Cabreira

Gustavo Cabreira

Responder

Post mais votado

07/03/2018

Olá Gustavo, acredito que se o impedimento em testar Inserted com Deleted seja em função do tipo de campo utilizado (text), a melhor forma seria trocar este tipo por varchar ou nvarchar. Como são apenas 100 caracteres, não justifica usar um campo text. Campos text devem ser usados apenas quando há necessidade de conteúdos muito longos e são péssimos para se fazer buscar por eles ou gerar relatórios. Essa sugestão serve para resolver seu problema?

Qualquer dúvida é só falar.

Um abraço!

Rodrigo Duclerc

Rodrigo Duclerc
Responder

Mais Posts

23/06/2018

Gustavo Cabreira

Oi Rodrigo.

Ok.Alterando o campo no banco para Varchar resolveu sim.

Esse caso em específico era a própria aplicação que gerava um campo do tipo text , porém realmente não a necessidade pois no caso do cliente um Varchar(400) é o suficiente.

Sobre esse item então a solução é não trabalhar realmente com um campo do tipo text pois o sql nesse caso não tem uma tratativa , alterando a coluna para varchar resolvemos a questão.

Obrigado pelo ajuda!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar