Wenn Sie eine berechnete Spalte in SQL Server erstellen, ist der Ausdruck, den Sie für die Spalte verwenden, entweder deterministisch oder nicht deterministisch. Dies kann Auswirkungen haben, z. B. ob Sie es in einem Index verwenden oder als „fortgesetzt“ kennzeichnen können.
Eine deterministische Spalte ist eine Spalte, die denselben Wert für einen bestimmten Satz von Eingabewerten und bei demselben Status der Datenbank zurückgibt. Eine nicht deterministische Spalte kann einen anderen Wert zurückgeben, selbst wenn sie dieselbe Eingabe erhält, selbst wenn der Datenbankstatus gleich bleibt. Beispielsweise ist eine Funktion, die das aktuelle Datum zurückgibt, nicht deterministisch, da sie jeden Tag einen anderen Wert zurückgibt.
Sie können die COLUMNPROPERTY()
verwenden Funktion mit IsDeterministic
Argument, um herauszufinden, ob eine berechnete Spalte deterministisch ist oder nicht.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Ergebnis:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
In diesem Fall der TotalValue
Spalte aus dbo.Products
Tabelle ist deterministisch. Wenn dies nicht der Fall wäre, wäre das Ergebnis 0
.
Der IsDeterministic
-Eigenschaft gilt nur für berechnete Spalten und Ansichtsspalten.