När du skapar en beräknad kolumn i SQL Server kommer uttrycket du använder för kolumnen antingen att vara deterministiskt eller icke-deterministiskt. Detta kan få konsekvenser, till exempel om du kan använda det i ett index eller inte flagga det som "beständigt".
En deterministisk kolumn är en som returnerar samma värde för en specifik uppsättning indatavärden och ges samma tillstånd i databasen. En icke-deterministisk kolumn kan returnera ett annat värde även när den ges samma indata även om databastillståndet förblir detsamma. Till exempel är en funktion som returnerar det aktuella datumet icke-deterministisk, eftersom den kommer att returnera ett annat värde varje dag.
Du kan använda COLUMNPROPERTY()
funktion med IsDeterministic
argument för att ta reda på om en beräknad kolumn är deterministisk eller inte.
Exempel
Här är ett exempel att visa.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Resultat:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
I det här fallet TotalValue
kolumnen från dbo.Products
tabellen är deterministisk. Om det inte var det skulle resultatet bli 0
.
IsDeterministic
egenskapen gäller endast beräknade kolumner och vykolumner.