我试图通过开始日期和结束日期约束SQL Server数据库,这样我永远不会对资源进行双重预订(即不会重复预订或重复预订)。日期范围的SQL Server约束
假设我的资源编号,使得该表看起来像 RESOURCEID,起始日期,结束日期,状态
所以可以说我有资源#1。我希望确保2017年1月8日至2017年1月16日的预订无法进行预订,2017年1月10日至2017年1月18日期间对同一资源进行单独预订。
还有一些复杂情况,资源的StartDate可以与资源的EndDate相同。所以1/8/1027到2017年1月16日和2017年1月16日到2017年1月20日是好的(即一个人可以在同一天登记另一个人结账)。
此外,状态字段指示资源的预订是活动还是取消。所以我们可以忽略所有取消的预订。
在保存时,我们已经对代码(存储过程和C#)中的这些重叠或双重预订保留进行了保护,但我们希望通过添加DB保留来添加额外的保护层。
这可能在SQL Server中吗?
由于提前
你可以用触发器做这样的事情,我敢肯定,但我不认为你可以在约束中做你需要的。 – pmbAustin
[日期范围重叠检查约束](http://stackoverflow.com/questions/12035747/date-range-overlapping-check-constraint) – SqlZim