Автоматическое выполнение действий после удаления строк - это то, для чего предназначены TRIGGERS .
В вашем случае это выглядит примерно так:
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
Как видите SQL Сервер не запускает триггер после каждой удаленной строки, но после выполнения каждого оператора DELETE, который может включать несколько удаленных строк, поэтому нам нужно использовать псевдотаблицу «удалено» для применения нашего действия. на каждой из этих удаленных строк.
PS : Вот как можно сделать то, что вы просили, хотя я согласен с комментариями, в которых говорится, что вы могли бы лучше структурировать эту проблему вместо того, чтобы для обновления такого количества строк после каждого удаления.
UPDATE
Если вы хотите выполнять его вручную для каждой инструкции удаления, а не автоматически для триггера, вы можете передать a параметр в оператор DELETE на C#, чтобы обновить последующие RowCounters. Что-то вроде:
delete from MyTable where BoxNo = @BoxNo
update MyTable set RowCounter = RowCounter + 1 where BoxNo > @BoxNo