1

レコードが作成または更新されるたびに、作成日と更新日を持つテーブルを作成することはできないのだろうか。

たとえば、そのテーブルにレコードを挿入すると、作成日が更新日と同じようにテーブルに自動生成されます。

このレコードを変更すると、作成日は変更されませんが、更新日は日付に従って変更されます。

どうもありがとう

4

3 に答える 3

5
CREATE TABLE dbo.foo
(
  ID INT IDENTITY(1,1),
  CreatedDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UpdatedDate DATETIME NULL
);
GO

CREATE TRIGGER dbo.foo_ForUpdate
  ON dbo.foo
  FOR UPDATE
AS
BEGIN
  SET NOCOUNT ON;

  UPDATE f SET UpdatedDate = CURRENT_TIMESTAMP
    FROM dbo.foo AS f
    INNER JOIN inserted AS i
    ON f.ID = i.ID;
END
GO
于 2013-07-29T16:59:05.250 に答える
2

トリガーは最適なオプションです。トリガーのサンプルは次のように参照できます。

CREATE TRIGGER dbo.TableTriggerName
ON dbo.TableName
AFTER INSERT, UPDATE, DELETE
AS 
BEGIN
    SET NOCOUNT ON;

    --
    -- Check if this is an INSERT, UPDATE or DELETE Action.
    -- Set Action to Insert by default.
    IF EXISTS(SELECT * FROM DELETED)
    BEGIN
    END
    ELSE 
        IF NOT EXISTS(SELECT * FROM INSERTED) RETURN; -- Nothing updated or inserted.

    ...

    END

トリガーリファレンス

于 2013-07-29T16:59:09.277 に答える