sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man avgör om en beräknad kolumn är deterministisk i SQL Server

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.


  1. Klona en SQLite-databas

  2. Hur ger man en unik begränsning till en kombination av kolumner i Oracle?

  3. Snabbaste sättet att lista alla databaser i SQL Server med T-SQL

  4. Oracle 12.2.0.1 kommer 2016