约束不同的时刻

时间:2017-03-21 21:37:59

标签: sql sql-server

我有一份时间表

所以我的问题是:我如何制定一个限制条件,禁止每天调度一次不超过一次的值。 谢谢。

3 个答案:

答案 0 :(得分:0)

这取决于您需要“阻止”调度的级别。您想要从UI,中间层还是数据库级别阻止它?

  • UI - 针对数据库或中间层检查执行AJAX检查并阻止在那里插入记录(不是安全的解决方案,但值得一提,因为它会通知用户现有记录)。

  • 中层 - 最好的地方。查询您的数据库,查看是否存在具有给定的vesselID和TourDate的记录。如果返回任何记录,则不允许插入。然后,您可以重定向到页面,并向用户发送有用的消息。业务逻辑通常会出现在此处,最好将业务逻辑与数据库分离。

  • 数据库级别 - 业务逻辑可见性最强大但最不易维护和不良的做法。许多选项,都很麻烦:

存储过程 - 在插入时,检查记录,与中间层相同的过程,但是您必须将所有层中的“错误”消息汇集到一起。

使用vesselID和TourDate的复合键自动确保只能插入唯一条目。

插入时对表数据的约束 - 不仅仅是用于搜索优化的索引,而是实际约束。此约束可以添加到现有表中,也可以是表创建语句本身的一部分。

答案 1 :(得分:0)

只需在船只和日期上添加唯一约束/索引:

create unique index unq_tourschedule_vesselid_tourdate on tourschedule(vesselid, tourdate);

(使用唯一索引实现唯一约束。)

您应该在数据库中执行此操作,因此即使手动更改数据也会强制执行此约束。

答案 2 :(得分:0)

是的我创建了一个独特的索引,一切顺利,谢谢你帮助我。