Sql 不同时刻的约束
我有一张时间表 所以我的问题是:我如何限制一个值一天不能超过一次。Sql 不同时刻的约束,sql,sql-server,Sql,Sql Server,我有一张时间表 所以我的问题是:我如何限制一个值一天不能超过一次。 非常感谢。这取决于您需要“阻止”日程安排的级别。您想从UI、中间层还是在数据库级别阻止它 UI—针对DB或中间层检查执行AJAX检查,并防止在其中插入记录(这不是一个安全的解决方案,但值得一提,因为它会通知用户现有记录) 中层——最好的地方。查询数据库以查看是否存在具有给定vesselID和TourDate的记录。如果返回了任何记录,则不允许插入。然后,您可以重定向到页面,并向用户发送一条有用的消息。业务逻辑通常在这里,最好将
非常感谢。这取决于您需要“阻止”日程安排的级别。您想从UI、中间层还是在数据库级别阻止它
- UI—针对DB或中间层检查执行AJAX检查,并防止在其中插入记录(这不是一个安全的解决方案,但值得一提,因为它会通知用户现有记录)
- 中层——最好的地方。查询数据库以查看是否存在具有给定vesselID和TourDate的记录。如果返回了任何记录,则不允许插入。然后,您可以重定向到页面,并向用户发送一条有用的消息。业务逻辑通常在这里,最好将业务逻辑与数据库分离
- 数据库级—对于业务逻辑可见性来说,最健壮,但最不易维护,而且是一种糟糕的做法。许多选项,都很麻烦:
插入时对表数据的约束-不仅仅是用于搜索优化的索引,而是实际约束。此约束可以添加到现有表格中,也可以是表格创建语句本身的一部分。只需在船只和日期上添加唯一的约束/索引即可:
create unique index unq_tourschedule_vesselid_tourdate on tourschedule(vesselid, tourdate);
(使用唯一索引实现唯一约束。)
您应该在数据库中执行此操作,因此即使手动更改数据也会强制执行此约束。是的,我创建了一个唯一的索引,一切正常。谢谢您的帮助 创建唯一索引(容器、日期)谢谢@Lashane它成功了!