SQL Serverで計算列を作成する場合、列に使用する式は決定論的または非決定論的のいずれかになります。これは、インデックスで使用できるかどうか、または「永続的」としてフラグを立てることができるかどうかなどの影響を与える可能性があります。
決定論的列は、特定の入力値のセットに対して同じ値を返し、データベースの同じ状態が与えられる列です。非決定論的な列は、データベースの状態が同じままであっても、同じ入力が与えられた場合でも異なる値を返す可能性があります。たとえば、現在の日付を返す関数は、毎日異なる値を返すため、非決定的です。
COLUMNPROPERTY()
を使用できます IsDeterministic
で機能する 計算列が決定論的であるかどうかを調べるための引数。
例
実例を示します。
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
結果:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
この場合、TotalValue
dbo.Products
の列 テーブルはです 決定論的。そうでない場合、結果は0
になります。 。
IsDeterministic
プロパティは、計算列とビュー列にのみ適用されます。