timestamp (Transact-SQL)

Tipo di dati che espone i numeri binari univoci generati automaticamente all'interno di un database. timestamp viene in genere utilizzato come meccanismo per la gestione delle versioni delle righe di tabella. Le dimensioni di archiviazione sono di 8 byte. Il tipo di dati timestamp rappresenta un numero incrementale e non mantiene una data o un'ora. Per registrare una data o un'ora, utilizzare il tipo di dati datetime.

Osservazioni

Ogni database include un contatore che viene incrementato a ogni operazione di inserimento o aggiornamento eseguita su una tabella contenente una colonna di tipo timestamp all'interno del database. Questo contatore è il timestamp database. In questo modo viene tenuto traccia del tempo relativo all'interno di un database e non del tempo effettivo che può essere associato a un orologio. Ogni tabella può includere una sola colonna di tipo timestamp. A ogni modifica o inserimento di una riga in una colonna di tipo timestamp il valore incrementato del timestamp database viene inserito nella colonna di tipo timestamp. Questa caratteristica rende la colonna timestamp non adatta per le chiavi, in particolare per le chiavi primarie. Gli aggiornamenti eseguiti sulla riga modificano il valore timestamp, con la conseguente modifica del valore della chiave. Se la colonna è una chiave primaria, il valore di chiave precedente non è più valido, come non sono più valide le chiavi esterne che fanno riferimento al valore precedente. Se un cursore dinamico include riferimenti alla tabella, tutti gli aggiornamenti modificano la posizione delle righe all'interno del cursore. Se la colonna è una chiave indice, tutti gli aggiornamenti alle righe di dati comportano l'aggiornamento dell'indice.

È possibile utilizzare la colonna timestamp di una riga per determinare in modo semplice se i valori nella riga sono cambiati dall'ultima lettura. Se la riga è stata modificata, il valore timestamp viene aggiornato. Se invece alla riga non sono state apportate modifiche, il valore timestamp rimane invariato rispetto alla lettura precedente. Per restituire il valore timestamp corrente per un database, utilizzare @@DBTS.

Il tipo di dati Transact-SQL timestamp è diverso dal tipo di dati timestamp definito nello standard SQL-2003. Il tipo di dati SQL-2003 timestamp equivale al tipo di dati Transact-SQL datetime.

rowversion è sinonimo del tipo di dati timestamp ed è conforme alle funzionalità dei sinonimi dei tipi di dati. Nelle istruzioni DDL utilizzare rowversion anziché timestamp, se possibile. Per ulteriori informazioni, vedere Sinonimi dei tipi di dati (Transact-SQL).

In un'istruzione CREATE TABLE o ALTER TABLE non è necessario specificare un nome di colonna per il tipo di dati timestamp, ad esempio:

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

Se non si specifica un nome di colonna, Microsoft Motore di database di SQL Server 2005 genera il nome di colonna timestamp. Il sinonimo rowversion non è tuttavia caratterizzato dalla stessa funzionalità. In caso di utilizzo di rowversion, è necessario specificare un nome di colonna.

[!NOTA] Per generare valori timestamp duplicati, utilizzare l'istruzione SELECT INTO nella quale una colonna di tipo timestamp è inclusa nell'elenco SELECT. Non è consigliabile utilizzare timestamp in questo modo.

Una colonna di tipo timestamp che non supporta valori Null equivale dal punto di vista semantico a una colonna di tipo binary(8). Una colonna di tipo timestamp che supporta valori Null equivale dal punto di vista semantico a una colonna di tipo varbinary(8).

Vedere anche

Riferimento

ALTER TABLE (Transact-SQL)
CAST e CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
Tipi di dati (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)

Altre risorse

Conversione del tipo di dati (Motore di database)

Guida in linea e informazioni

Assistenza su SQL Server 2005