删除一行记录时修改相关字段数值

SQL Server数据库,表 QuestionKinds有如下字段:
KindID      自增量 
KindName 
KindOrder    问题种类显示的顺序号

浏览数据时,使用,上下移动数据,修改,删除。

删除一行记录的存储过程如下:

CREATE PROCEDURE Pr_DeleteQuestionKind
(
@KindID int
)
AS
DELETE
QuestionKinds

WHERE
KindID = @KindID
GO

因测试中发现,删除记录后,KindOrder的数值之间 出现不连续现象,导致 上下移动按钮运行时,页面出现不移动现象。实际上,数据是移动的。不过,移动的量是 -1  +1.为改正此错误,现修改删除一行记录的存储过程如下:

--2007-06-12  d修改 使  删除类别的时候,kindorder也跟着修改。既删除时,使所有比该KindOrder数值大的KindOrder都-1。

CREATE PROCEDURE Pr_DeleteQuestionKind
(
@KindID int
)
AS

DECLARE @UpdateOrder int

SET  @UpdateOrder =
(
SELECT
KindOrder
       
FROM
QuestionKinds
       
WHERE
KindID = @KindID
)

UPDATE
QuestionKinds
        
SET
KindOrder =KindOrder-1
where KindOrder>@UpdateOrder

DELETE
QuestionKinds

WHERE
KindID = @KindID
GO

原文地址:https://www.cnblogs.com/flashicp/p/780430.html