如何在SQL唯一约束中仅使用DateTime列的年份?
我正在创建一个唯一的约束,只允许每年使用一个注册号, 我的意思是,在注册表中可以存在多个数字2,但前提是 是在不同的年份创建的。我听说可以用独特的 约束,但我不知道如何创建,无需为年创建一列,为月创建另一列,等等 质疑 更改表dbo.NCIA_FFAA 添加约束uk_corresia UNIQUE(num_corres,fecha_cre) num_corres是注册表号,fecha_cre是创建日期,但我只需要年份,不需要整个列,可以吗如何在SQL唯一约束中仅使用DateTime列的年份?,sql,sql-server,unique-key,Sql,Sql Server,Unique Key,我正在创建一个唯一的约束,只允许每年使用一个注册号, 我的意思是,在注册表中可以存在多个数字2,但前提是 是在不同的年份创建的。我听说可以用独特的 约束,但我不知道如何创建,无需为年创建一列,为月创建另一列,等等 质疑 更改表dbo.NCIA_FFAA 添加约束uk_corresia UNIQUE(num_corres,fecha_cre) num_corres是注册表号,fecha_cre是创建日期,但我只需要年份,不需要整个列,可以吗 谢谢使用计算列,然后创建索引。比如: alter tab
谢谢使用计算列,然后创建索引。比如:
alter table registry add RegistryYear as year(RegistryDate);
create index registry_number_year on Registry(number, RegistryYear);
在SQL Server中,有一种称为“日期”的数据类型—您可以使用该列并在其上创建索引 当然,您也可以将“DATE”类型的计算列添加到表中,只需将DATETIME列的DATE部分填充到该计算列中,使其持久化,并对其进行索引。应该很好用
ALTER TABLE dbo.Entries
ADD yearOnly as Year(CAST(CompositionDate AS DATE)) PERSISTED
CREATE UNIQUE INDEX UX_Entries ON Entries(yearOnly , Slug)
嘿,我遵循你关于使用唯一索引的建议,但现在我有另一个问题,我创建的程序在创建具有相同编号和日期的行时没有收到任何错误(它也没有创建行),但我需要这个板条箱有一个错误,以便用户可以更正。