0

私は SqlServer 2005 を使用しています。日付を更新するプロパティ (デフォルト値のようなものですが、挿入だけでなく、任意の変更) を設定したいと考えています。つまり、すべての更新と挿入で、現在の日付が列に配置されます。これはどのように達成されますか?

4

2 に答える 2

1

Aテーブルがあるとしましょう:

CREATE TABLE A (
  ID INT,
  Name VARCHAR(20),
  SomeDate DATE NULL)

トリガーを作成できます。

CREATE TRIGGER INSTEAD_OF_A_INSERT
ON A
INSTEAD OF INSERT AS
BEGIN

INSERT INTO A (ID, Name, SomeDate)
SELECT ID, Name, GETDATE ()
FROM inserted 

END
GO

CREATE TRIGGER INSTEAD_OF_A_UPDATE
ON A
INSTEAD OF UPDATE AS
BEGIN

UPDATE A
SET SomeDate = GETDATE(),
    Name = I.Name
FROM A A1 JOIN INSERTED I ON A1.ID = I.ID

END
GO

あなたが望むものを与えるもの

INSERT INTO A (ID, Name)
VALUES(1, 'John');

INSERT INTO A (ID, Name)
VALUES(2, 'Jack');

UPDATE A
SET Name = 'Jane'

    SELECT *
    FROM A

これはあなたが遊ぶことができるフィドルです。

于 2012-11-15T15:55:16.190 に答える
0

これを行う最も簡単な (ただし、必ずしも最も効率的であるとは限りません) 方法は、トリガーを使用することです。

MSDNを参照してください。

AFTER INSERT,UPDATE正確な要件に応じて、または- のいずれかを使用INSTEAD OF INSERT,UPDATEしてジョブを実行できます。

于 2012-11-15T15:48:19.827 に答える