【发布时间】:2016-04-07 15:21:52
【问题描述】:
我需要一种方法来仅在插入的字段(更准确地说是 DateTime 字段)中强制执行单个值,该字段应始终设置为插入时的当前日期/时间。 我正在做一个大学练习,他们希望所有的约束都在数据库中完成,通常我会设置一个 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() 将触发插入错误,因为微秒会导致不匹配。 所以我想第一个问题是,这可能吗?如果是这样(我希望如此)怎么办?
【问题讨论】:
-
使用触发器用当前时间填充字段?
-
@RyanVincent Right thx,不知道为什么我没有想到这一点,我在其他地方使用触发器,这样真的很简单。
标签: sql-server default check-constraints getdate