Wanneer u een berekende kolom in SQL Server maakt, is de uitdrukking die u voor de kolom gebruikt deterministisch of niet-deterministisch. Dit kan implicaties hebben, zoals of je het al dan niet in een index kunt gebruiken of het kunt markeren als "aanhoudend".
Een deterministische kolom is een kolom die dezelfde waarde retourneert voor een specifieke set invoerwaarden en met dezelfde status van de database. Een niet-deterministische kolom kan een andere waarde retourneren, zelfs als dezelfde invoer wordt gegeven, zelfs als de databasestatus hetzelfde blijft. Een functie die bijvoorbeeld de huidige datum retourneert, is niet-deterministisch, omdat deze elke dag een andere waarde retourneert.
U kunt de COLUMNPROPERTY() . gebruiken functie met de IsDeterministic argument om erachter te komen of een berekende kolom deterministisch is.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SELECT
COLUMNPROPERTY(
OBJECT_ID('dbo.Products'),
'TotalValue',
'IsDeterministic')
AS IsDeterministic;
Resultaat:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
In dit geval is de TotalValue kolom uit de dbo.Products tafel is deterministisch. Als dat niet het geval was, zou het resultaat 0 . zijn .
De IsDeterministic eigenschap is alleen van toepassing op berekende kolommen en weergavekolommen.