我正在创建一个时间表,让用户能够在其网站上安排某些项目。该表基本上如下所示:
schedules
---------
item_id
start_date
end_date
...
我正在尝试创建一个有意义的自然键(唯一键)。从技术上讲,自然键应该类似于 [item_id, date range],其中日期范围不能重叠。但显然,我需要一些在现实世界中可行的东西:)
我可以做些什么来设置一个有意义的唯一/自然 key ?
谢谢!
最佳答案
假设您的意思是日期范围不能与给定的 id 重叠,那么,不,我认为没有任何方法可以仅使用唯一的键约束来做到这一点。但是您可以要求 id 非空,并添加一个插入/更新之前触发器,如果结果数据重叠,该触发器将 id 设置为空(强制发生错误)。
关于MySQL/Percona : Date Range data integrity (via natural key),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29221063/