sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fortæller du, om en beregnet kolonne er deterministisk i SQL Server

Når du opretter en beregnet kolonne i SQL Server, vil det udtryk, du bruger til kolonnen, enten være deterministisk eller ikke-deterministisk. Dette kan have konsekvenser, såsom hvorvidt du kan bruge det i et indeks eller markere det som "vedvarende".

En deterministisk kolonne er en, der returnerer den samme værdi for et specifikt sæt af inputværdier og givet den samme tilstand af databasen. En ikke-deterministisk kolonne kan returnere en anden værdi, selv når den gives samme input, selvom databasetilstanden forbliver den samme. For eksempel er en funktion, der returnerer den aktuelle dato, ikke-deterministisk, fordi den returnerer en anden værdi hver dag.

Du kan bruge COLUMNPROPERTY() funktion med IsDeterministic argument for at finde ud af, om en beregnet kolonne er deterministisk.

Eksempel

Her er et eksempel til at demonstrere.

SELECT 
  COLUMNPROPERTY(
    OBJECT_ID('dbo.Products'), 
    'TotalValue', 
    'IsDeterministic') 
    AS IsDeterministic;

Resultat:

+-------------------+
| IsDeterministic   |
|-------------------|
| 1                 |
+-------------------+

I dette tilfælde TotalValue kolonne fra dbo.Products tabel er deterministisk. Hvis det ikke var, ville resultatet være 0 .

IsDeterministic egenskaben gælder kun for beregnede kolonner og visningskolonner.


  1. MySQL:Indsæt post, hvis den ikke findes i tabellen

  2. Brug MySQL Relational Databases på Ubuntu 9.10 (Karmic)

  3. Sådan tælles elementer i kommasepareret liste MySQL

  4. Python Postgres psycopg2 ThreadedConnectionPool opbrugt