使用 SQL Server CAST([column] AS DATE) 函数的唯一约束

Sch*_*eem 1 sql sql-server date unique-constraint

我有一个appointments表,其中包含(除其他外)a[personid]和一[appdate]datetime(2)数据类型。我想添加一项限制,以防止任何人personid在任何一天获得多次预约。

我尝试过,但没有成功

ALTER TABLE dbo.tblappointments
    ADD CONSTRAINT SingleApp UNIQUE (PersonID, CAST(Appdate AS DATE))
Run Code Online (Sandbox Code Playgroud)

谢谢。

Car*_*rge 5

我想您可以创建一个计算列并将其用作索引。

ALTER TABLE dbo.tblappointments ADD AppointmentDay as CAST(Appdate AS DATE) PERSISTED
Run Code Online (Sandbox Code Playgroud)

如果不使用PERSISTED该值,则每次访问该列时都会计算该值