Pergunta

Eu tenho uma coluna computada chamado Cost que os retornos dinheiro.

Eu quero ter uma outra coluna que retorna (Cost * 2), mas ele não permite que me.

Foi útil?

Solução

colunas computadas não podem fazer referência a outras colunas computadas. Embora você deve ser capaz de simplesmente repetir a expressão que você gostaria de referência. De MSDN :

Uma coluna calculada é calculado a partir de uma expressão que pode utilizar outras colunas na mesma tabela. A expressão pode ser um noncomputed nome da coluna, constante, a função , e qualquer combinação destes ligado por um ou mais operadores. A expressão não pode ser uma subconsulta.

Gostaria também de acrescentar que, se isso vier a trabalho como você esperaria, ele iria apresentar todos os tipos de novas questões que você tem que lidar com eles. Atualmente, atualizações em muitas colunas / linhas ocorrem em paralelo e atomicamente.

Por isso, não faria sentido usar uma coluna computada em seu cálculo porque não seria exatamente ter um valor ... ainda. Se qualquer coisa, você estaria usando um velho, valor atualizado-un.

Se você realmente queria evitar a duplicação de expressão, você pode fazer isso em um gatilho, embora eu recomendo vivamente que você não fazer isso. Gatilhos não são divertidos e só deve ser usado por pessoas muito experientes em casos raros.

Outras dicas

Você tem que defini-lo contra as colunas de base na tabela .

computed_column_expression é um expressão que define o valor de um coluna calculada. Uma coluna é calculado uma coluna virtual que não é fisicamente armazenados na tabela, a menos a coluna é marcado persistiu. o coluna é calculado a partir de uma expressão que utiliza outras colunas na mesma mesa. Por exemplo, uma coluna calculada pode ter a definição: custo AS preço * Qty. A expressão pode ser um nome de coluna noncomputed, constante, função, variável, e qualquer combinação destes ligado por um ou mais operadores. A expressão não pode ser uma subconsulta ou conter apelido tipos de dados.

Embora você poderia refatorar ambos usar o mesmo UDF escalar (passar em todas as mesmas colunas) para facilitar a manutenção e garantir a consistência da lógica, o impacto no desempenho seria enorme, e eu só usar UDFs escalares como um último recurso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top