我試圖發送一個數字和標識符並更新while循環中的行。while循環中的SQL更新
例如,如果@number = 1
和
MAX(Number)
FROM QuestionnaireQuestions
WHERE Questionnaire_ID = @Questionnaire_ID = 4
的結果是值1,1,1,當我期望3,2,1。
CREATE PROCEDURE [dbo].[DeleteQuestion]
(@QuestionnaireQuestions_ID BIGINT,
@Questionnaire_ID BIGINT,
@Number SMALLINT)
AS
DECLARE @i AS SMALLINT
SELECT @i = MAX(Number)
FROM QuestionnaireQuestions
WHERE Questionnaire_ID = @Questionnaire_ID
WHILE (@i > @Number)
BEGIN
UPDATE QuestionnaireQuestions
SET Number = (@i - 1)
WHERE Number = @i
AND Questionnaire_ID = @Questionnaire_ID
SET @i = @i - 1
END
DELETE QuestionnaireQuestions
WHERE QuestionnaireQuestions_ID = @QuestionnaireQuestions_ID
你是建議使用行標識符,如果有差距,那麼,我們還有訂單?這肯定會工作,但在我的網格中也有上下箭頭以及刪除選項,所以我@Number(這是一個真正的排序數字)。我很感激你花時間看我的問題。 – 2015-02-08 21:14:15
正確。即使序列不連續,排序仍然存在。只要您阻止多個用戶同時刪除同一調查問卷中的行,您接受的答案就會生效。嘗試將數據模型與您的可視化佈局分開。 – Pekka 2015-02-08 21:27:12