2013-10-24 36 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; 

次序並不是非常依賴,你可以對其進行優化來連續範圍工作,但在我的知識確實沒有什麼更好的