GARANTIR DESCONTO

Fórum Trigger estilo checkbox #49784

10/03/2005

0

preciso criar uma Trigger para que em uma colona da tabela (que pode receber apenas 0 ou -1) fique sempre com apenas um único valor -1 e todos os outros 0.
Se conseguisse saber a linha que está sendo alterada, conseguiria fazer uma consulta na clausura where e pegar todos os registros menos o que foi alterado, mas não consegui.

Como faço uma trigger que altere todos os registros menos o que foi alterado?


Raserafim

Raserafim

Responder

Posts

11/03/2005

Fsflorencio

Amigo,
É um negócio meio difícil de implementar isto por triggers, pois se em algum evento update eu alterar o próprio registro ele ficaria em looping, a não ser que vc use um generator como uma espécie de semáforo (isto funciona), mas uma maneira melhor seria no evento before update pegar um generator e alterar este campo com o valor dele.
Então no seu select pegaria o registro que tiver o campo com o maior valor, ex:

select first 1 * from tabela
order by campo_que_recebe_generator desc

//seria conveniente criar um índice para este campo.

Qualquer coisa estamos aí. :D


Responder

Gostei + 0

11/03/2005

Afarias

numa trigger after update da ´tabela´ coloque:

if (new.campo<>old.campo and new.campo = -1) then
  update tabela set campo = 0 where codigo <> new.codigo;



onde código é um campo chave da tabela

T+


Responder

Gostei + 0

12/03/2005

Raserafim

deu certo afarias, valeu.

e vale salientar que esta trigger, apesar de simples é bastante interessante.


Responder

Gostei + 0

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

Aceitar