Действительно ли «отметка времени» устарела? - PullRequest
3 голосов
/ 31 марта 2019

Microsoft рекомендует использовать rowversion вместо timestamp. https://docs.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?view=sql-server-2017

Однако я не вижу, как это сделать.

Ссылочная документация T-SQL гласит:

Если вы не укажете имя столбца, компонент SQL Server Database Engine сгенерирует имя столбца отметки времени; однако синоним rowversion не соответствует этому поведению. Когда вы используете rowversion, вы должны указать имя столбца, например:

CREATE TABLE ExampleTable2 (PriKey int PRIMARY KEY, VerCol rowversion) ;

Однако, когда я использую этот код для генерации таблицы, столбец в SSMS отображается как:

  Colum Name: VerCol

  Data type: timestamp

Есть ли способ использовать rowversion в SQL Server?

1 Ответ

1 голос
/ 01 апреля 2019

Только синтаксис timestamp устарел, то есть указание столбца по его типу без указания его имени.Внизу это все еще timestamp, введите id = 189;попробуйте select * from sys.types where system_type_id = 189.Ключевое слово rowversion использовалось только для того, чтобы провести различие между ними.Они эквивалентны:

CREATE TABLE a (id INT PRIMARY KEY IDENTITY(1, 1), VerCol timestamp)
CREATE TABLE b (id INT PRIMARY KEY IDENTITY(1, 1), VerCol rowversion)

Обе эти таблицы будут выглядеть и вести себя одинаково.Попробуйте

SELECT * FROM sys.columns WHERE object_id in (OBJECT_ID('dbo.a'), OBJECT_ID('dbo.b'))

, вы увидите, что оба столбца VerCol имеют одинаковый system_type_id.Если вы попробуете:

INSERT INTO a DEFAULT VALUES
INSERT INTO b DEFAULT VALUES

SELECT * FROM a
SELECT * FROM b

Вы получите что-то вроде:

id          VerCol
----------- ------------------
1           0x00000000000007D3

(1 row affected)

id          VerCol
----------- ------------------
1           0x00000000000007D4

(1 row affected)

Значения VerCol, конечно, будут отличаться для вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...