仅允许当前 date/time 在 SQL 服务器插入

Only allow current date/time on SQL Server insertion

我需要一种方法来仅在插入字段(更准确地说是 DateTime 字段)中强制使用单个值,该字段在插入时应始终设置为当前 date/time。 我正在做一项大学练习,他们希望所有约束都在数据库中完成,通常我只会使用 DEFAULT GetDate() 并始终在插入时使用 DEFAULT,但练习要求阻止了这一点。 现在对于一个整数我可以这样做(我省略了其他字段,因为它们与手头的问题无关):

CREATE TABLE tester(
d INTEGER not null DEFAULT 3,
CONSTRAINT chkd CHECK(d = 3)
);

然而我想要的是:

CREATE TABLE tester(
d DATETIME not null DEFAULT GETDATE(),
CONSTRAINT chkd CHECK(d = ????????)
);

在 check() 中重新迭代 GetDate() 将触发插入错误,因为微秒会导致不匹配。 所以我想第一个问题是,这可能吗?如果是这样(我希望如此)如何?

不要在 tester table 中跟踪 date/time。相反,有一个单独的 table,其中有一列引用 tester table 的 ID 作为外键约束。新的 table 将有另一列,即 DateTime 列。在插入到 tester table 时,可以触发一个触发器,将一行插入到新的 table 中,其中包含新创建的 tester 行的 ID 以及当前 date/time.

根据 Ryan 的评论得到了这个有效的答案

CREATE TRIGGER trigger_date ON [dbo].[tester] 
FOR INSERT
AS
BEGIN
    UPDATE tester SET d = GETDATE() WHERE id IN (SELECT id FROM INSERTED);
END
GO