2013-10-24 40 views
0

我有一个正在开发中的计划编制应用程序,它允许用户将活动添加到计划中的某一天。从表中删除行后保持连续的索引值

我已经持有的标题数据计划表:

调度名称,在日的日程安排的长度,ID

和保持活动ID,计划ID和日偏移的活动表。

日偏移指的是时间表的'第n天'。我不需要存储特定的日期 - 稍后将日程表添加到某人的日历时添加。

对于日程安排中的所有日子,或者其中的任何日子,都不一定有活动。

问题是 - 我希望能够从计划中删除天(并为此插入n天)。

要删除,用户可以在他们正在编辑的时间表中突出显示多个日期。

所以关于选择删除,我会有一系列的日期偏移量从活动表中删除。这一点是微不足道的。

我的问题是 - 如果我从时间表中删除第5天,那么第6天将成为新的第5天;第7天新的一天6等等,所以我需要更新表中所有受影响的活动记录。

我能想到的唯一方法是按照升序排列日期,然后删除每个日期,然后搜索和递减dayoffset值高于删除的偏移量的所有记录。然后重新运行这个查询每天被删除。

这感觉效率很低,但我想不出任何更好的。有任何想法吗?

回答

0
UPDATE `schedule` SET `day` = `day` - number_of_deleted_days WHERE `day` > first_day_deleted; 

次序并不是非常依赖,你可以对其进行优化来连续范围工作,但在我的知识确实没有什么更好的