timestamp (Transact-SQL)

Type de données présentant des nombres binaires uniques automatiquement générés à l'intérieur d'une base de données. timestamp est généralement utilisé en tant que mécanisme d'affectation de version aux lignes de tables. 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. Pour enregistrer une date ou une heure, utilisez le type de données datetime.

Notes

Chaque base de données dispose d'un compteur qui est incrémenté chaque fois qu'une opération d'insertion ou de mise à jour est effectuée dans une table contenant une colonne timestamp dans la base de données. Ce compteur est l'horodateur de la base de données. Il suit une heure relative au sein d'une base de données, et non pas une heure réelle qui peut être associée à une horloge. Une table ne peut comporter qu'une seule colonne timestamp. Chaque fois qu'une ligne associée à une colonne timestamp est modifiée ou insérée, la valeur incrémentée d'horodateur de la base de données est insérée dans la colonne timestamp. Cette propriété fait de la colonne timestamp un candidat peu valable pour les clés, en particulier les clés primaires. En effet, toute mise à jour apportée à la ligne a pour effet de changer la valeur de timestamp, et par conséquent de modifier la valeur de la clé. Si la colonne se trouve dans une clé primaire, l'ancienne valeur de clé n'est plus valide et les clés externes faisant référence à l'ancienne valeur ne sont plus valides. Si la table est référencée dans un curseur dynamique, toutes les mises à jour modifient la position des lignes dans le curseur. Si la colonne est une clé d'index, toutes les mises à jour apportées à la ligne de données génèrent également des mises à jour de l'index.

La colonne timestamp d'une ligne permet de déterminer rapidement si une valeur de la ligne a changé depuis la dernière fois qu'elle a été lue. Si une ligne fait l'objet d'une modification, la valeur de timestamp est mise à jour. Si aucune modification n'est apportée à la ligne, la valeur de timestamp est inchangée. Pour renvoyer la valeur actuelle de timestamp pour une base de données, utilisez @@DBTS.

Le type de données timestamp de Transact-SQL est différent du type de données timestamp défini dans la norme SQL-2003. Le type de données timestamp de SQL-2003 est équivalent au type de données datetime de Transact-SQL.

rowversion est le synonyme du type de données timestamp et suit le comportement des synonymes de types de données. Dans les instructions DDL, utilisez rowversion au lieu de timestamp là où c'est possible. Pour plus d'informations, consultez Synonymes des types de données (Transact-SQL).

Dans une instruction CREATE TABLE ou ALTER TABLE, il n'est pas nécessaire de spécifier un nom de colonne pour le type de données timestamp. Par exemple :

CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, timestamp);

Si vous ne spécifiez pas de nom de colonne, le moteur de base de données SQL Server 2005 de Microsoft génère le nom de colonne timestamp. Toutefois, le synonyme rowversion ne suit pas ce comportement. Lorsque vous utilisez rowversion, vous devez spécifier un nom de colonne.

ms182776.note(fr-fr,SQL.90).gifRemarque :
Des valeurs de timestamp en double peuvent être générées lorsque l'instruction SELECT INTO est utilisée et qu'elle contient une colonne timestamp dans la liste SELECT. Nous déconseillons d'utiliser timestamp de cette façon.

Une colonne timestamp qui n'accepte pas les valeurs NULL est sémantiquement équivalente à une colonne binary(8). Une colonne timestamp qui accepte les valeurs NULL est sémantiquement équivalente à une colonne varbinary(8).

Voir aussi

Référence

ALTER TABLE (Transact-SQL)
CAST et CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
Types de données (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
MIN_ACTIVE_ROWVERSION (Transact-SQL)
SET @local\_variable (Transact-SQL)
UPDATE (Transact-SQL)

Autres ressources

Conversion de types de données (moteur de base de données)

Aide et Informations

Assistance sur SQL Server 2005