从表中删除行后保持连续的索引值

时间:2013-10-24 15:25:21

标签: php mysql sql

我正在开发一个计划构建应用程序,允许用户在计划中的某一天添加​​活动。

我有一个包含标题数据的计划表:

安排名称,日程安排的长度,天数

和一个活动表,其中包含活动ID,计划ID和日期偏移。

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

计划中的所有日期或其中任何日期都不一定有活动。

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

要删除,用户可以在他们正在编辑的计划中突出显示多天。

因此,在选择删除时,我将从活动表中删除一组日期偏移。这一点很简单。

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

我能想到这样做的唯一方法是按升序排序要删除的天数,然后删除每一天,然后搜索并减少dayoffset值高于删除的偏移量的所有记录。然后针对要删除的每一天重新运行此查询。

感觉非常低效,但我想不出更好的事情。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

订单并不真正依赖,您可以优化它以使用连续范围,但据我所知,实际上并没有更好的