SQL SERVER (triggers instead) - Alterar valores no momento da inserçã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!
Parece bem simples, mas está me gerando bastante dor de cabeça.
Desje já grato pela ajuda!
Cleber Azeredo
Curtidas 0
Respostas
Jair N.
05/07/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.
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!
Parece bem simples, mas está me gerando bastante dor de cabeça.
Desje já grato pela ajuda!
GOSTEI 0
Cleber Azeredo
05/07/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.
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.
GOSTEI 0
Flavia Santos
05/07/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))
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))
GOSTEI 0
Cleber Azeredo
05/07/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!
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!
GOSTEI 0
Cleber Azeredo
05/07/2012
Pessoal algo equivalente a trigger abaixo, desenvolvida no Oracle.
vlw
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
GOSTEI 0