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

Sådan returneres den aktuelle rækkeversionsværdi for en SQL Server-database (T-SQL-eksempel)

Du kan bruge @@DBTS funktion for at få den aktuelle rowversion af en given database i SQL Server. Mere specifikt returnerer den den sidst brugte rowversion værdien af ​​den aktuelle database.

Eksempel 1 – Grundlæggende brug

For at bruge @@DBTS funktion, skal du blot vælge den i en SELECT erklæring.

Sådan:

SELECT @@DBTS;

Resultat:

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

Eksempel 2 – Forskellige databaser

Som nævnt er rowversionen værdi er specifik for hver database. Derfor skal du sikre dig, at du er i den rigtige database.

Her er et eksempel til demonstration:

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)

Hvor er denne værdi brugt?

rowversionen værdi bruges af kolonner, der enten har en rækkeversion eller tidsstempel datatype. Sådanne kolonner opdateres automatisk med et unikt nummer, baseret på den øgede værdi af rowversion , når der sker en indsættelse eller opdatering.

Ved at bruge ovenstående eksempel, hvis jeg indsætter eller opdaterer en række i Music database, og den række har en rowversion kolonne, vil denne kolonnes værdi sandsynligvis blive sat til 0x00000000000007D1 (dvs. 0x00000000000007D0 øget med 1). På dette tidspunkt, hvis jeg skulle bruge @@DBTS mod den database, ville den returnere 0x00000000000007D1 (fordi det er den sidst brugte rækketælling værdi).

Hvis jeg derefter opdaterer den række, er dens rowversion kolonne bliver 0x00000000000007D2 . Dette er sandt, selvom opdateringshandlingen faktisk ikke ændrede nogen data. Denne gang, hvis jeg kører @@DBTS det ville returnere 0x00000000000007D2 .

For et eksempel, der viser dette, se Hvad er "rowversion" i SQL Server.

tidsstemplet datatype er faktisk et synonym for rowversion , så værdien returneret af @@DBTS afspejler den aktuelle rækkeversion værdi, om den blev forøget med en rækkeversion kolonne eller et tidsstempel kolonne.

Bemærk også det tidsstempel er en af ​​fire forældede datatyper, der er i vedligeholdelsestilstand og kan blive fjernet i en fremtidig version af SQL Server. Derfor bør du bruge rowversion i stedet for tidsstempel i nyt udviklingsarbejde. Du bør også planlægge at ændre applikationer, der i øjeblikket bruger tidsstempel .


  1. MySQL bruger DB har ikke adgangskodekolonner - Installerer MySQL på OSX

  2. Programmatisk hente SQL Server lagret procedure kilde, der er identisk med kilden returneret af SQL Server Management Studio gui?

  3. PostgreSQL er verdens bedste database

  4. Sådan opretter du en database i MySQL Workbench ved hjælp af GUI