【发布时间】:2012-07-16 23:51:48
【问题描述】:
在我的数据库中,我有如下三个表:
Tasks (TaskID, TaskName, TaskDescription)TaskDetails (TaskID, subTaskPosition, SubTaskID)Subtasks (SubTaskID, Description)
我正在尝试编写一个Stored Procedure 来完全删除一个SubTask,然后将另一个SubTasks 重新排序为一个Task。
注意事项:
-
TaskDetails链接Tasks到成员SubTasks。 -
SubTask可能在许多不同的任务中被引用。 -
Task应由SubTasks的有序列表组成...即 1,2,3,4 而不是 1,3,4,5。
删除SubTask 及其与Task 的链接相当容易,如下所示:
DELETE FROM TaskDetails WHERE SubTaskID = @subTaskIDDELETE FROM SubTasks WHERE SubTaskID = @subTaskID
但是,一旦最初的 SubTask 被删除,我无法理解如何重新排序 TaskDetails 表中的另一个 SubTasks。在英语中,我需要执行以下操作 - “对于刚刚从中删除 SubTask 的所有任务,从删除行所在位置之后出现的所有 subTaskPosition 字段中减去 1”。
任何帮助或指针表示赞赏...
戈登
【问题讨论】:
-
这是什么 SQL 类型?甲骨文、微软 SQL 服务器? DB2? MySql?
-
对不起,我应该说 - MS SQL Server (2012) - 虽然它也需要在 Azure SQL 上运行!感谢您在下面的回复 - 我稍后会尝试并让您知道我的进展情况。非常感谢!
标签: sql sql-server stored-procedures azure-sql-database sql-server-2012