Мартьянова А.Е. Базы данных и знаний 204
нескольких столбцов в одном байте, не обязательно должно быть непре-
рывным. Если в таблице для данных типа bit вы определите 9 столбцов,
то для всех этих столбцов будет выделено 2 байта.
SQL Server записывает информацию о столбцах, определенных для
данных типа bit, в системную таблицу syscolumns, в которой в столбце
status хранятся смещения этих столбцов. Столбец, определенный для
данных типа bit, не может быть индексом.
Тип timestamp. Если вы определяете столбец таблицы для данных
типа timestamp, то сразу же после вставки новой или обновления сущест-
вующей строки в столбце этого типа автоматически добавляется значе-
ние счетчика. Непосредственно ввести значение в столбец с этим типом
данных невозможно. Увеличивающееся значение счетчика может
быть
вставлено в такой столбец только самой системой SQL Server.
Вставленное системой SQL Server в столбец значение счетчика
идентифицирует последовательность операций, которые выполнил SQL
Server. Значения в столбце типа timestamp хранятся в формате
varbinary(8), а не в формате datetime или smalldatetime. По умолчанию в
столбцах типа timestamp допустимы значения NULL.
Значение типа time-
stamp не является датой или временем, но внутри таблицы или базы дан-
ных оно всегда уникально. В таблице можно определить только один
столбец для данных этого типа.
Тип данных timestamp часто используется для уникальной иденти-
фикации строки. Когда вы обновляете поля в строке, существует общая
практика упоминать столбец, определенный как timestamp,
в предложе-
нии WHERE
инструкции UPDATE. В этом случае гарантируется, что ин-
струкция UPDATE
обновит только одну строку таблицы. Вы можете
быть уверены в уникальности значения типа timestamp, поскольку сервер
поддерживает и обновляет его всякий раз, когда вы вставляете новую
или обновляете существующую строку.
Данные типа timestamp используются как часть предложения
WHERE
для предотвращения одновременного обновления одной и той
же строки двумя пользователями, поскольку при выполнении для строки
инструкции WHERE
значение данных типа timestamp меняется автома-
тически. Вы можете быть уверены, что не обновите чью-либо чужую
информацию. Если кто-то еще изменяет строку, над которой вы сейчас
работаете, то при сохранении им обновленной информации поле time-
stamp изменится и строка не будет больше соответствовать вашей копии.
Когда вы выполните команду UPDATE
для сохранения ваших измене-
ний, предложение WHERE
не даст вам этого сделать, поскольку команда
204