Når du opretter en beregnet kolonne i SQL Server, vil det udtryk, du bruger til kolonnen, enten være deterministisk eller ikke-deterministisk. Dette kan have konsekvenser, såsom hvorvidt du kan bruge det i et indeks eller markere det som "vedvarende".
En deterministisk kolonne er en, der returnerer den samme værdi for et specifikt sæt af inputværdier og givet den samme tilstand af databasen. En ikke-deterministisk kolonne kan returnere en anden værdi, selv når den gives samme input, selvom databasetilstanden forbliver den samme. For eksempel er en funktion, der returnerer den aktuelle dato, ikke-deterministisk, fordi den returnerer en anden værdi hver dag.
Du kan bruge COLUMNPROPERTY()
funktion med IsDeterministic
argument for at finde ud af, om en beregnet kolonne er deterministisk.
Eksempel
Her er et eksempel til at demonstrere.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Resultat:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
I dette tilfælde TotalValue
kolonne fra dbo.Products
tabel er deterministisk. Hvis det ikke var, ville resultatet være 0
.
IsDeterministic
egenskaben gælder kun for beregnede kolonner og visningskolonner.