sql >> Database >  >> RDS >> Sqlserver

Hoe weet u of een berekende kolom deterministisch is in SQL Server?

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.


  1. Hoe MySQL 8 op Windows te installeren

  2. MySQL verleent privileges aan gebruiker voor database

  3. POWER() Voorbeelden in SQL Server

  4. MariaDB JSON_EXISTS() uitgelegd