私はMiscrosoftSQLServer 2012を使用していますが、この記事では次のように述べられています。
タイムスタンプ構文は非推奨になりました。この機能は、MicrosoftSQLServerの将来のバージョンで削除される予定です。新しい開発作業でこの機能を使用することは避け、現在この機能を使用しているアプリケーションを変更することを計画してください。
「timestamp」列の代わりに「rowversion」列を使用することにしました。そこで、次のテーブルを作成しました。
CREATE TABLE [dbo].[TestTable]
(
[Col001] [INT] NOT NULL
,[Col002] [CHAR](2) NOT NULL
...
,[Col00N] [DATETIME2] NOT NULL
,[RowVersionID] [ROWVERSION] NOT NULL
,CONSTRAINT [PK_ProtoSurveyGlobalizationChanges_RowVersionID] PRIMARY KEY CLUSTERED
(
[RowVersionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
そして、テーブルに関する情報(列の詳細など)を表示する「ALT + F1」の組み合わせを押して、「RowVersionID」列が「timestamp」タイプでマークされていることを確認するまで、すべてが順調に見えていました。
次に私が行ったのは、SQL Server Management Studio 2012を使用して「テーブルを削除して作成」することでした。「生成されたSQL」は、元のクエリを次のように変更します。
[RowVersionID] [timestamp] NOT NULL
サーバーが最初に設定したタイプを使用していないのはなぜですか。また、記事で「タイムスタンプ」を使用しないようにアドバイスされているのに、サーバーがそれを選択しているのはなぜですか。