レコードが作成または更新されるたびに、作成日と更新日を持つテーブルを作成することはできないのだろうか。
たとえば、そのテーブルにレコードを挿入すると、作成日が更新日と同じようにテーブルに自動生成されます。
このレコードを変更すると、作成日は変更されませんが、更新日は日付に従って変更されます。
どうもありがとう
レコードが作成または更新されるたびに、作成日と更新日を持つテーブルを作成することはできないのだろうか。
たとえば、そのテーブルにレコードを挿入すると、作成日が更新日と同じようにテーブルに自動生成されます。
このレコードを変更すると、作成日は変更されませんが、更新日は日付に従って変更されます。
どうもありがとう
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
トリガーは最適なオプションです。トリガーのサンプルは次のように参照できます。
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