2016-05-26 10 views
0

SQL ServerのTimeStampデータ型の目的は何ですか。SQL Server TimeStampデータ型

バイナリなので、人間が読めるわけではないため、datetimeまたは他のタイプには変換できません。どんな種類の複製も使用しないので、私には意味がありません。私は、

私が尋ねる理由は、私は、テーブルのほとんどがTimeStamp列を持つデータベースを継承していることであると私は

INSERT INTO SELECT * 

または

SELECT * INTO 

OKを行うことができないんだけどプロシージャやプロダクションのシナリオでこれを行うことはありませんが、テーブルのクローンを作成したり、小さなデータセットを一時テーブルにコピーしたりするために、開発に多くの時間を費やしています。

これらの列を削除することは安全ですか?それらはシステム内のどこにも問い合わせされません。

ありがとうございます!

+0

私は[this post](http://stackoverflow.com/questions/4460197)/what-is-difference-between-datetime-timestamp)あなたの質問に答えるべきである – Hill

+0

データベースからフェッチされてから他の誰かが行を更新したかどうかを調べるために使用しました –

答えて

3

これらは通常競合検出に使用されます。

を挿入するか、をデータベースに更新するたびに、新しいユニークなタイムスタンプ値が行のタイムスタンプフィールドに配置されます。

これは、あなたが次のシナリオを検出することができることを意味します

  1. あなたはこれらの行への変更、メモリ
  2. のいくつかの他のプロセスの更新1やステージデータベース
  3. から1つまたは複数の行を取得他のプロセスが変更された行などを再クエリする必要があります。
  4. データベースを更新する必要がありますが、他のプロセスが変更された行などを再クエリする必要があります。

ポイント4はであり、タイムスタンプを使用してと検出されます。ポイント1で照会した行のタイムスタンプが変更された場合、その行はポイント1に入った行ではなくなります。

+0

誰かがあなたにそれらの列を削除するかどうかは安全です。 –

+0

私は同意します、devテーブルの 'INSERT INTO'を行う必要があるときにカラムを指定するのが最も安全な方法だと思います。 – SQLChao

+0

私はそのフィールドを削除し、競合検出を処理するdatetime2フィールドを作成しました。今私はすべての可能なテストとQAを行っています。もし私に欠点があるなら、私はあなたに知らせるでしょう。みんなありがとう! –

関連する問題