我有这张table:当我删除这个表中的一个框时,我需要增加下面所有的行。例如:如果我删除boxno'4',那么在boxno'4'(5,6,7,…等)的最后一行之后的行必须以1为增量,就像(4,5,6,…等)。我希望我能成功地解释这个问题。您能帮我用sql server查询来执行这个吗?提前谢谢。
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
1条答案
按热度按时间omhiaaxx1#
触发器的作用是在删除行后自动执行操作。
在你的例子中,它看起来像:
正如您所看到的,SQLServer不会在删除每一行之后触发触发器,而是在执行每一个delete语句之后触发触发器,这可能涉及删除的几行,因此我们需要使用“deleted”伪表对删除的每一行应用我们的操作。
ps:这就是你所要求的方法,虽然我同意你的评论,你可以更好地解决这个问题,而不是每次删除后需要更新这么多行。
更新
如果您想在每条delete指令上手动执行它,而不是在触发器上自动执行它,您可以将一个参数传递给c#上的delete语句,以便更新后面的行计数器。比如: