timestamp (Transact-SQL)

Tipo de datos que expone números binarios únicos generados automáticamente en una base de datos. timestamp suele utilizarse como mecanismo para marcar la versión de las filas de la tabla. El tamaño de almacenamiento es de 8 bytes. El tipo de datos timestamp es simplemente un número que se incrementa y no conserva una fecha o una hora. Para registrar una fecha o una hora, use un tipo de datos datetime.

Notas

Cada base de datos tiene un contador que se incrementa por cada operación de inserción o actualización que se lleva a cabo en una tabla que contiene una columna timestamp en la base de datos. Este contador es la marca de hora de base de datos. Realiza un seguimiento de una hora relativa de una base de datos, no una hora real que pueda asociarse con un reloj. Una tabla sólo puede tener una columna timestamp. Cada vez que se modifica o inserta una fila con una columna timestamp, el valor de marca de hora de base de datos incrementado se inserta en la columna timestamp. Esta propiedad hace que una columna timestamp sea un mal candidato para claves, especialmente claves principales. Cualquier actualización de la fila hace que cambie el valor de marca de hora, con lo que cambia el valor de la clave. Si la columna está en una clave principal, el valor de la clave principal antigua deja de ser válido, así como las claves externas que hacen referencia al valor antiguo. Si se hace referencia a la tabla en un cursor dinámico, todas las actualizaciones cambian la posición de las filas en el cursor. Si la columna es una clave de índice, todas las actualizaciones de la fila de datos también generan actualizaciones del índice.

Puede utilizar la columna timestamp de una fila para determinar con facilidad si algún valor de la fila ha cambiado desde la última vez que se leyó. Si se ha realizado algún cambio en la fila, el valor de marca de hora se actualiza. Si no se ha realizado algún cambio en la fila, el valor de marca de hora es el mismo que en la lectura anterior. Para devolver el valor de marca de hora actual de una base de datos, utilice @@DBTS.

El tipo de datos timestamp de Transact-SQL es distinto del tipo de datos timestamp definido en el estándar SQL-2003. El tipo de datos timestamp de SQL-2003 es equivalente al tipo de datos datetime de Transact-SQL.

rowversion es el sinónimo del tipo de datos timestamp y está sujeto al comportamiento de los sinónimos de tipos de datos. En las instrucciones DDL, utilice rowversion en lugar de timestamp siempre que sea posible. Para obtener más información, vea Sinónimos de tipos de datos (Transact-SQL).

En una instrucción CREATE TABLE o ALTER TABLE, no tiene que especificar ningún nombre de columna para el tipo de datos timestamp, por ejemplo:

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

Si no especifica un nombre de columna, el SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) de Microsoft genera el nombre de columna timestamp; sin embargo, el sinónimo de rowversion no sigue este comportamiento. Cuando utiliza rowversion, debe especificar un nombre de columna.

[!NOTA] Se pueden generar valores de marca de hora duplicados con la instrucción SELECT INTO en la que una columna timestamp está en la lista SELECT. No se recomienda utilizar timestamp de esta manera.

Una columna timestamp que no acepta valores NULL equivale semánticamente a una columna binary(8). Una columna timestamp que acepta valores NULL equivale semánticamente a una columna varbinary(8).

Vea también

Referencia

ALTER TABLE (Transact-SQL)
CAST y CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
Tipos de datos (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)

Otros recursos

Conversiones de tipos de datos (motor de base de datos)

Ayuda e información

Obtener ayuda sobre SQL Server 2005