Array
(
)

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

Cleber
   - 05 jul 2012

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!

Jair A.n.
   - 05 jul 2012

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.

Citação:
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
   - 05 jul 2012

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.

Flavix
   - 05 jul 2012

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))

Cleber
   - 05 jul 2012

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!

Cleber
   - 05 jul 2012

Pessoal algo equivalente a trigger abaixo, desenvolvida no Oracle.

#Código

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