在日期时间列的日期部分添加约束

ADD CONSTRAINT on date part of a datetime column

我想在多列上添加唯一约束。通常,以下脚本应该可以完成这项工作:

CREATE UNIQUE INDEX uq_yourtablename
  ON dbo.yourtablename(column1, column2);

如果 columns2 是 DateTime 并且我们只想在日期部分设置约束怎么办? 一种解决方案可能是使用触发器,但我需要避免这种情况。

您可以使用计算列来虚拟存储 datetime 列的日期部分,并在唯一索引中使用它。

create table yourtablename (
    column1 int, 
    column2 datetime, 
    column2_dt as convert(date, column2)
);

create unique index uq_yourtablename on yourtablename(column1, column2_dt);