timestamp (Transact-SQL)

Это тип данных, который представляет собой автоматически сформированные уникальные двоичные числа в базе данных. Тип данных timestamp используется в основном в качестве механизма для отметки версий строк таблицы. Размер при хранении — 8 байт. Тип данных timestamp — всего лишь увеличивающееся значение, которое не сохраняет дату или время. Тип данных datetime используется для записи даты или времени.

Замечания

Каждая база данных имеет счетчик, который увеличивается при каждой операции вставки или обновления в таблице, содержащей столбец типа timestamp в базе данных. Этот счетчик является временной меткой базы данных. Происходит отслеживание относительного времени базы данных, а не действительного времени, которое может быть связано с часами. В таблице может быть только один столбец типа timestamp. Каждый раз при изменении или вставке строки, содержащей столбец типа timestamp, значение увеличенной временной метки вставляется в столбец типа timestamp. Из-за этого свойства столбец типа timestamp нежелательно использовать в ключе, особенно в первичном ключе. Любое обновление, сделанное в строке, изменяет значение timestamp и значение ключа. Если столбец является первичным ключом, старое значение ключа больше не действительно и внешние ключи, ссылающиеся на старое значение, становятся недействительными. Если на таблицу есть ссылка из динамического курсора, все обновления изменяют положение строк в курсоре. Если столбец является ключом индекса, все обновления в строках данных также приводят к обновлению индекса.

Столбец типа timestamp можно использовать, чтобы определить, было ли произведено изменение какого-либо значения в строке с момента ее последнего считывания. При произведении любых изменений в строке значение timestamp будет обновлено. Если в строке не было никаких изменений, значение timestamp будет таким же, как и при предыдущем считывании. Для получения текущего значения timestamp используйте функцию @@DBTS.

Тип данных timestamp языка Transact-SQL отличается от типа данных timestamp, определенного в стандарте SQL-2003. Тип данных timestamp стандарта SQL-2003 эквивалентен типу данных datetime языка Transact-SQL.

Тип данных rowversion является синонимом типа данных timestamp и подчиняется правилам поведения синонимов типа данных. В инструкциях языка DDL при возможности используйте тип данных rowversion вместо timestamp. Дополнительные сведения см. в разделе Синонимы типов данных (Transact-SQL).

В инструкциях CREATE TABLE или ALTER TABLE для столбца с типом данных timestamp не обязательно указывать имя, например:

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

Если имя столбца не указать, компонент Microsoft SQL Server 2005 Database Engine формирует имя столбца типа timestamp; однако синоним rowversion не подчиняется этому правилу. При использовании типа данных rowversion указание имени столбца обязательно.

ms182776.note(ru-ru,SQL.90).gifПримечание.
С помощью инструкции SELECT INTO, в которой столбец типа timestamp находится в списке SELECT, могут быть сформированы дублированные значения временной метки. Использовать тип данных timestamp таким образом не рекомендуется.

Столбец типа timestamp, который не может принимать значение NULL, семантически эквивалентен столбцу типа binary(8). Столбец типа timestamp, который может принимать значение NULL, семантически эквивалентен столбцу типа varbinary(8).

См. также

Справочник

ALTER TABLE (Transact-SQL)
Функции CAST и CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
Типы данных (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)

Другие ресурсы

Преобразование типов данных (компонент Database Engine)

Справка и поддержка

Получение помощи по SQL Server 2005