Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Douglas Alves_167830

Bloquear a Alteração de um Campo

Recommended Posts

Boa Tarde Pessoal,


Estou com um problema no sistema da empresa que já está me tirando do sério e quem sabe vocês poderiam me ajudar.


Tenho uma tabela de parâmetros na qual informamos todos as funções que os caixas da loja executam.


Nesta tabela, tenho uma coluna chamada "PARÂMETRO" com uma linha chamada "EFETUA_VENDA" e tenho uma outra coluna chamada "VALOR_ATUAL" com a resposta ao PARÂMETRO "EFETUA VENDA", que no nosso caso é .T. ou .F. (True ou False).


Porém o valor True fica sendo alterado diversas vezes por dia para False, e assim que o caixa é reiniciado, o mesmo não consegue efetuar vendas. Já tentei diversas vezes descobrir o motivo do valor se alterar, mas infelizmente não consegui.


Gostaria de saber, se existe alguma forma de eu bloquear este valor como TRUE, para que ele fique sempre assim e não seja mais alterado (a não ser que eu realmente faça o update para atualiza-lo)


Desde já, agradeço a atenção de todos!


Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro se devia localizar quem está alterando indevidamente este campo.

 

Pelo que entendi em determinadas condições o valor pode ficar False, o que não permite que se crie uma Check Constraint.

 

Uma Trigger de validação poderia verificar se uma lista de users tem direito a alterar esta coluna, senão gera um erro.

 

Eu faria :

 

Uma trigger estourando um erro na alteração deste campo, provisória, para achar quem está fazendo a besteira.

 

Localizando o problema veria a solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que não há ninguém alterando manualmente o valor para False,

Já chegamos a achar que fosse e até mesmo o pessoal do suporte do sistema já constatou que é o

próprio sistema do PDV que altera os valores sozinho. Só que nem eles conseguem encontrar o motivo e pedem para nós ficarmos monitorando isso e alterando os valores quando necessário, o que é uma perda de tempo, já que isso é infinito.

Então pensei na possibilidade de haver alguma forma de "Travar" o valor em True.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Põe uma trigger ou constraint provisória e deixar estourar o erro só para saber onde é o problema.

 

Algo ou alguém faz um update , senão tem um ghost na sua instalação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu falei no MSDN:


Porém o valor True fica sendo alterado diversas vezes por dia para False, e assim que o caixa é reiniciado, o mesmo não consegue efetuar vendas. Já tentei diversas vezes descobrir o motivo do valor se alterar, mas infelizmente não consegui.

Me surgiu uma dúvida nesta parte.

Não existe alguma função no sistema que esteja dando um update neste campo?

A ideia do Motta é boa. Deixar estourar o erro em tela e ver a origem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A.Jr Sql Server tem algum tipo de grant por coluna ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, tem sim.

 

http://msdn.microsoft.com/pt-br/library/ms187965(v=sql.105).aspx

 

DENY SELECT ON OWNER.TABLE (COLUMN) TO USER

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

Obrigado pelas dicas, vou dar uma pesquisada por aí pra ver como executo este processo e fazer isso em uma homologação primeiro.

vai que da algum b.o ne?! kkkk

Bom, pode ser feito por Trigger ou dando um DENY no campo, mas envolve a tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma CHECK CONSTRAINT também

 

A trigger é boa pois permite capturar user , aplicação etc avisar via email , pode ser que quem tome erro fique "na sua" ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.