sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man returnerar det aktuella rowversion-värdet för en SQL Server-databas (T-SQL-exempel)

Du kan använda @@DBTS funktion för att få den aktuella rowversionen av en given databas i SQL Server. Mer specifikt returnerar den den senast använda rowversion värdet för den aktuella databasen.

Exempel 1 – Grundläggande användning

För att använda @@DBTS funktionen, välj den helt enkelt inom en SELECT uttalande.

Så här:

SELECT @@DBTS;

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| 0x0000000000000FA0 |
+--------------------+

Exempel 2 – Olika databaser

Som nämnts, rowversionen värdet är specifikt för varje databas. Därför måste du se till att du är i rätt databas.

Här är ett exempel att visa:

USE Music;
SELECT @@DBTS AS "Music rowversion";

Use WideWorldImportersDW;
SELECT @@DBTS AS "WideWorldImportersDW rowversion";

Resultat:

Changed database context to 'Music'.
+--------------------+
| Music rowversion   |
|--------------------|
| 0x00000000000007D0 |
+--------------------+
(1 row affected)
Changed database context to 'WideWorldImportersDW'.
+-----------------------------------+
| WideWorldImportersDW rowversion   |
|-----------------------------------|
| 0x0000000000015F90                |
+-----------------------------------+
(1 row affected)

Var används detta värde?

rowversionen värde används av kolumner som antingen har en radversion eller tidsstämpel data typ. Sådana kolumner uppdateras automatiskt med ett unikt nummer, baserat på det ökade värdet för rowversion , närhelst en infogning eller uppdatering sker.

Med exemplet ovan, om jag infogar eller uppdaterar en rad i Music databas, och den raden har en rowversion kolumnen, kommer kolumnens värde förmodligen att ställas in på 0x00000000000007D1 (dvs. 0x00000000000007D0 ökas med 1). I det här skedet, om jag skulle använda @@DBTS mot den databasen skulle den returnera 0x00000000000007D1 (eftersom det är det senast använda radantal värde).

Om jag sedan uppdaterar den raden är dess rowversion kolumnen blir 0x00000000000007D2 . Detta är sant, även om uppdateringen faktiskt inte ändrade några data. Den här gången, om jag kör @@DBTS det skulle returnera 0x00000000000007D2 .

För ett exempel som visar detta, se Vad är "rowversion" i SQL Server.

tidsstämpeln datatyp är faktiskt en synonym för rowversion , så värdet som returneras av @@DBTS återspeglar den aktuella rowversionen värde om det ökades med en radversion kolumn eller en tidsstämpel kolumn.

Observera också att tidsstämpel är en av fyra föråldrade datatyper som är i underhållsläge och kan tas bort i en framtida version av SQL Server. Därför bör du använda rowversion istället för tidsstämpel i nytt utvecklingsarbete. Du bör också planera för att ändra applikationer som för närvarande använder tidsstämpel .


  1. Bästa DBaaS-lösningar för PostgreSQL

  2. Hur statement_timestamp() fungerar i PostgreSQL

  3. Använder Salesforce SOQL från Linux

  4. Kontrollerar oracle sid och databasnamn