关于DateCreated和DateModified列的问题 - SQL Server

use*_*509 5 t-sql database sql-server default

CREATE TABLE Customer
(
        customerID         int identity (500,20) CONSTRAINT 
        .
        .
        dateCreated    datetime DEFAULT GetDate() NOT NULL,
        dateModified   datetime DEFAULT GetDate() NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

当我插入记录时,dateCreated和dateModified设置为默认日期/时间.当我更新/修改记录时,dateModified和dateCreated保持不变?我该怎么办?

显然,我需要将dateCreated值保留为第一次插入时,dateModified会在记录字段中发生更改/修改时不断更改.

换句话说,你能写一个快速触发样本吗?我还不太了解......

Adr*_*der 10

您可能希望查看创建更新触发器以更新此值

看看像

CREATE TABLE Vals(
        ID INT,
        Val VARCHAR(10),
        DateCreated DATETIME DEFAULT GetDate(),
        DateUpdated DATETIME DEFAULT GetDate()
)
GO

CREATE TRIGGER Upd ON Vals
AFTER UPDATE
AS 
UPDATE Vals
SET     DateUpdated = GetDate()
FROM    Vals INNER JOIN
        inserted ON Vals.ID = inserted.ID
Go

INSERT INTO Vals (ID, Val) SELECT 1, 'A'
SELECT *
FROM    Vals
GO

UPDATE Vals SET Val = 'B'
SELECT *
FROM    Vals
GO

DROP TABLE Vals
GO
Run Code Online (Sandbox Code Playgroud)


gbn*_*gbn 5

UPDATE
    Customer
SET
    ... = NewValue,
    dateModified = DEFAULT
WHERE
    ...
Run Code Online (Sandbox Code Playgroud)

我会使用它,而不是使用dateModified = GETDATE()GETDATE()仅使用一次(例如,您将来想更改为GETUTCDATE())

或触发器,如果​​您有多个更新路径...?