1

我正在使用 SQL Server 2005。

我有一个由这些列组成的复合键:

用户 ID ..... int

ADate ..... 日期时间

如果我为用户输入两个具有不同时间的相似日期,则表示允许该记录。但我希望它因为类似的日期而受到限制。

插入相同日期部分时如何限制?

4

2 回答 2

2

考虑你的桌子

create table tbl (
    userid int,
    adate datetime
)

您可以添加一个 COMPUTED 列

alter table tbl add adateonly as datediff(d,0,adate);

这样您就可以在其上创建一个 UNIQUE 约束:

alter table tbl add constraint uq_tbl_date unique(userid, adateonly);
于 2012-12-05T18:48:46.237 回答
0

如果我理解您的问题,您想使用索引或其他方法创建复合限制?

1)使用索引,您是否可以添加另一列 varchar(8),仅包含日期,例如:yyyymmdd,然后使用触发器或在插入之前,您可以生成日期字符串。

2)在表上创建一个触发器并验证这两个键,可能是一个插入和更新触发器。

希望这会有所帮助,何塞克鲁兹

于 2012-12-05T18:49:57.220 回答