1

削除されたレコードに日付/タイムスタンプを設定したいのですが、奇妙な結果が得られます。このトリガーが起動すると、日付が1906に設定されます。

GETDATE()クエリで関数を使用しUPDATEて、テーブルのプロパティもデフォルト値で使用してみました。テーブルに手動で入力したレコードには問題なく機能しDELETED_RECORDSますが、実際の削除によって移動されたレコードには1906年の日付があります。何が起こっているのかわかりません

ALTER TRIGGER [dbo].[Backup_TT_Deleted_Records]
ON [dbo].[tblLLS_TT]
FOR DELETE
AS
  BEGIN
      INSERT INTO dbo.tblLLS_TT_DELETED_RECORDS
      SELECT *
      FROM   Deleted

      UPDATE dbo.tblLLS_TT_DELETED_RECORDS
      SET    Deleted_DTTM = GETDATE()
      WHERE  dbo.tblLLS_TT_DELETED_RECORDS.Deleted_DTTM IS NULL
  END 

また、上記のトリガーを使用しDELETED_RECORDSて、nullを残してテーブルにレコードを入力しDelete_DTTM、トリガーを起動するレコードを削除すると、そのレコードは正しく入力されますが、DELETED_RECORDSテーブルに入って削除されたレコードの日付は再び1906年。また、各レコードごとに1日ずつ日付が増加することにも注目しました。

ここで何が起こっているのか考えてみませんか?

他に実行してほしいテストがあればお知らせください。結果を投稿します。これはおかしいです。ありがとう!

4

2 に答える 2

1

実行すると、どのような価値が得られますか?

SELECT GETDATE();

おそらく、サーバー時間が正しく構成されていません。列「Deleted_DTTM」のデフォルト値がデフォルトのシステム日付になるようにすることもできます。その後、最後の更新ステートメントをスキップできます。

于 2013-01-03T19:43:08.303 に答える