Když vytvoříte vypočítaný sloupec v SQL Server, výraz, který použijete pro sloupec, bude buď deterministický, nebo nedeterministický. To může mít důsledky, například zda jej můžete použít v indexu nebo jej označit jako „přetrvávající“.
Deterministický sloupec je sloupec, který vrátí stejnou hodnotu pro určitou sadu vstupních hodnot a při stejném stavu databáze. Nedeterministický sloupec může vrátit jinou hodnotu, i když je zadán stejný vstup, i když stav databáze zůstane stejný. Například funkce, která vrací aktuální datum, je nedeterministická, protože každý den vrátí jinou hodnotu.
Můžete použít COLUMNPROPERTY()
pomocí funkce IsDeterministic
argument ke zjištění, zda je vypočítaný sloupec deterministický.
Příklad
Zde je příklad k demonstraci.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Výsledek:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
V tomto případě TotalValue
ze sloupce dbo.Products
tabulka je deterministický. Pokud by tomu tak nebylo, výsledek by byl 0
.
IsDeterministic
vlastnost se vztahuje pouze na počítané sloupce a sloupce zobrazení.