別の計算列に基づく計算列?
-
12-09-2019 - |
質問
私はお金を返しCost
と呼ばれる計算列を持っています。
私は(Cost * 2
)を返す別の列を持つようにしたいが、それは私にはできません。
解決
計算カラムは、他の計算された列を参照することができません。あなたはちょうどあなたが参照したい表現を繰り返すことができるようにするべきであるけれども。 MSDN でから:
計算列は、同じテーブル内の他の列を使用することができる式から計算されます。発現は、のnoncomputed のカラム名、定数、関数、および1つまたは複数のオペレータによって接続されたこれらの任意の組み合わせとすることができます。式は、サブクエリにすることはできません。
私はまた、これはあなたが望んでいるだろうと作業した場合、それはあなたが対処する必要があると思います新たな問題のすべての種類を提供することを追加する必要があります。現在、多くの列/行全体の更新を並列にし、アトミックに起こります。
したがって、それはまだ...それは正確に値を持っていないので、あなたの計算では、計算列を使用しても意味がありません。どちらかといえば、あなたは古い、未更新値を使用していると思います。
あなたが本当に表現の重複を避けたかった場合、私は強くあなたがいないの促すのに、あなたは、はトリガーでこれを行うことができます<全角>
のことを行います。トリガーは何の楽しみではないとだけ稀に非常に精通した人々によって使用されなければならない。他のヒント
あなたは、テーブル内のベース・カラムに対してそれを定義する必要がするます。
あなたは簡単にメンテナンスのために同じスカラUDFを(すべて同じ列を渡す)を使用すると、論理の一貫性を確保するために、それらの両方をリファクタリングできますが、computed_column_expressionです の値を定義する式 計算列。計算列は、 ありません仮想列 物理的にしない限り、テーブルに格納されています 列がPERSISTEDとマークされています。ザ・ カラムは、式から計算されます。 それは同じで他の列を使用しています テーブル。例えば、計算カラム 価格とコスト:定義を持つことができます *数量。式は定数noncomputed列名、することができ、 関数、変数、および任意の 1で接続されたこれらの組み合わせ 以上のオペレータ。表現 サブクエリであるか、またはエイリアスを含めることはできません データ型ます。
、パフォーマンスヒットは巨大になり、そして私は最後の手段としてのみスカラーUDFを使用します。