SQL SERVER (triggers instead) - Alterar valores no momento da inserção

05/07/2012

0

Pessoal estou com dificuldade em criar uma trigger no sql server que deve verificar se os valores de determinadas colunas são nulos e alterá-los para zero antes da inserção.

Parece bem simples, mas está me gerando bastante dor de cabeça.


Desje já grato pela ajuda!

Cleber Azeredo

Cleber Azeredo

Responder

Posts

05/07/2012

Jair N.

Bom Dia, porquê ao invés de, criar uma trigger não coloca valores default como regra nesta tabela. (se valor for nulo ao incluir mova zero para o campo). Reveja.

Pessoal estou com dificuldade em criar uma trigger no sql server que deve verificar se os valores de determinadas colunas são nulos e alterá-los para zero antes da inserção.

Parece bem simples, mas está me gerando bastante dor de cabeça.


Desje já grato pela ajuda!

Responder

05/07/2012

Cleber Azeredo

Jair,
esta opção foi descartada pois da forma que o sistema legado que estamos trabalhando stá estruturado não corrigiria o problema.

Grato pela ajuda.




Responder

05/07/2012

Flavia Santos

Cleber,

Já que o valor default não resolveria o seu problema, a instrução ISNULL não poderia ajudá-lo?

Insert into Tabela (Campo1, Campo2) values (Isnull(@Parametro1,0), Isnull(@Parametro2,0))

Responder

05/07/2012

Cleber Azeredo

Flavia,

acredito que se eu explicar melhor a situação ficará mais claro a necessidade da trigger.

Motivos:

1 - As inserções na base de dados não estão centralizadas em uma camada de dados, de forma que é difícil prever onde as mesmas ocorrem.

2 - O sistema deve ser portável em seus fontes pois o mesmo trabalha com (Postgres, Oracle e MSSQL)

3 - Estes campos nos quais quero validar... ganharão restrições not null e valor default, e sabemos que existe dentro dos
fontes inserções com estas colunas nulas.


Como é um software muito antigo, ou seja, difícil correção e validação pelos fontes, e existe a necessidade destas medidas o mais rápido possível, acredito que uma trigger resolva o problema.

A idéia é simples, verificar se determinadas colunas antes da inserção e atualização sejam verificadas se tem valores nulos, se sim atualizá-los para outro valor.

Não sei se ficou claro.

Flávia grato pela ajuda!
Responder

05/07/2012

Cleber Azeredo

Pessoal algo equivalente a trigger abaixo, desenvolvida no Oracle.


CREATE OR REPLACE TRIGGER trigger_teste
BEFORE INSERT OR UPDATE 
ON teste
FOR EACH ROW 
DECLARE
BEGIN
    :new.id      := (coalesce(:NEW.id, 0));
    :new.vlr_sal := (coalesce(:NEW.vlr_sal, 0.00));
END;


vlw
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar