删除行后如何更新“row number”列值1..n?

3lxsmp7m  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(303)

我有这张table:

当我删除这个表中的一个框时,我需要增加下面所有的行。
例如:如果我删除boxno'4',那么在boxno'4'(5,6,7,…等)的最后一行之后的行必须以1为增量,就像(4,5,6,…等)。我希望我能成功地解释这个问题。
您能帮我用sql server查询来执行这个吗?
提前谢谢。

omhiaaxx

omhiaaxx1#

触发器的作用是在删除行后自动执行操作。
在你的例子中,它看起来像:

CREATE TRIGGER MyTable_AfterDelete
ON MyTable
FOR DELETE
AS 
update MyTable set RowCounter = RowCounter + 1
from deleted
     inner join MyTable on MyTable.BoxNo > deleted.BoxNo

GO

正如您所看到的,SQLServer不会在删除每一行之后触发触发器,而是在执行每一个delete语句之后触发触发器,这可能涉及删除的几行,因此我们需要使用“deleted”伪表对删除的每一行应用我们的操作。
ps:这就是你所要求的方法,虽然我同意你的评论,你可以更好地解决这个问题,而不是每次删除后需要更新这么多行。
更新
如果您想在每条delete指令上手动执行它,而不是在触发器上自动执行它,您可以将一个参数传递给c#上的delete语句,以便更新后面的行计数器。比如:

delete from MyTable where BoxNo = @BoxNo

update MyTable set RowCounter = RowCounter + 1 where BoxNo > @BoxNo

相关问题