IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Questions sur Rowversion (ou Timestamp)


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 94
    Points : 62
    Points
    62
    Par défaut Questions sur Rowversion (ou Timestamp)
    Bonjour,
    J'ai deux questions sur l'utilisation de rowversion:

    1.
    la valeur de rowversion est-elle toujours incrémentée ? Ou juste différente a chaque action ?
    Par exemple si je stocke le timestamp à un moment donné dans @TS, est ce que j'aurais toutes les lignes modifiées dans une table depuis ce moment en faisant une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table where TS > @TS
    en considerant que TS est la colonne Rowversion :


    2.
    Concernant l'unicité de Rowversion: ce type de données a bien un MAX, donc que se passe-t-il quand ce max est atteint ?? Comment est garantie alors l'unicité du timestamp pour chaque enregistrement ?

    merci de vos réponses !

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Dans ce document, on a :

    La taille de stockage est de 8 octets. Le type de données timestamp est seulement un nombre incrémentiel et ne permet pas de conserver une date ou une heure
    8 octets = 2^64 = 18 446 744 073 709 551 616. Donc vous avez le temps

    la valeur de rowversion est-elle toujours incrémentée
    Testons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    CREATE TABLE Exemple
    (
    	ID INT IDENTITY CONSTRAINT PK_Exemple PRIMARY KEY,
    	Valeur INT,
    	TIMESTAMP
    )
    GO
     
    SET NOCOUNT ON
    GO
     
    INSERT INTO Exemple (Valeur) VALUES (1)
    INSERT INTO Exemple (Valeur) VALUES (2)
    INSERT INTO Exemple (Valeur) VALUES (3)
    INSERT INTO Exemple (Valeur) VALUES (4)
    INSERT INTO Exemple (Valeur) VALUES (5)
    INSERT INTO Exemple (Valeur) VALUES (6)
    INSERT INTO Exemple (Valeur) VALUES (7)
    INSERT INTO Exemple (Valeur) VALUES (8)
    INSERT INTO Exemple (Valeur) VALUES (9)
    INSERT INTO Exemple (Valeur) VALUES (10)
    INSERT INTO Exemple (Valeur) VALUES (11)
    INSERT INTO Exemple (Valeur) VALUES (12)
    INSERT INTO Exemple (Valeur) VALUES (13)
    INSERT INTO Exemple (Valeur) VALUES (14)
    INSERT INTO Exemple (Valeur) VALUES (15)
    INSERT INTO Exemple (Valeur) VALUES (16)
    INSERT INTO Exemple (Valeur) VALUES (17)
    GO
     
    SELECT * FROM Exemple
    Nous donne :

    ID Valeur TIMESTAMP
    1 1 0x00000000000007D1
    2 2 0x00000000000007D2
    3 3 0x00000000000007D3
    4 4 0x00000000000007D4
    5 5 0x00000000000007D5
    6 6 0x00000000000007D6
    7 7 0x00000000000007D7
    8 8 0x00000000000007D8
    9 9 0x00000000000007D9
    10 10 0x00000000000007DA
    11 11 0x00000000000007DB
    12 12 0x00000000000007DC
    13 13 0x00000000000007DD
    14 14 0x00000000000007DE
    15 15 0x00000000000007DF
    16 16 0x00000000000007E0
    17 17 0x00000000000007E1


    Donc oui

    Par exemple si je stocke le timestamp à un moment donné dans @TS, est ce que j'aurais toutes les lignes modifiées dans une table depuis ce moment en faisant une requête
    Code :

    SELECT * FROM TABLE WHERE TS > @TS
    Continuons le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @TS TIMESTAMP
    SELECT @TS = @@DBTS
     
    INSERT INTO Exemple (Valeur) VALUES (18)
    INSERT INTO Exemple (Valeur) VALUES (19)
    INSERT INTO Exemple (Valeur) VALUES (20)
     
    SELECT * FROM Exemple
    WHERE TIMESTAMP > @TS
    GO
    Nous donne :

    ID Valeur TIMESTAMP
    18 18 0x0000000000000FB2
    19 19 0x0000000000000FB3
    20 20 0x0000000000000FB4


    Donc oui aussi

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    Merci pour ces éclaircissements !!
    J'avais bien lu le document en question, et justement : Donc theoriquement, ce nombre a bien une limite....

    Savez vous ce qu'il se passe si jamais cette limite est atteinte ? car alors, l'unicité n'est plus garantie (c'est vraiment juste une question théorique ) !!

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    (c'est vraiment juste une question théorique )
    Là par contre j'en ai aucune idée, il faudrait faire un test

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] question sur les dates (timestamp)
    Par nintendoplayer dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/12/2007, 10h52
  2. Question sur l'utilisation du type TIMESTAMP
    Par shkyo dans le forum Outils
    Réponses: 8
    Dernier message: 08/09/2006, 14h20
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo