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.