Sql 触发一个操作以递增int列中大于或等于插入行的所有行

Sql 触发一个操作以递增int列中大于或等于插入行的所有行,sql,sql-server,triggers,Sql,Sql Server,Triggers,我正在对一个包含三列和几行数据的SQL表执行一些插入操作。这三列是Id、Product、ProductOrder,包含以下数据 Id Product ProductOrder 1 Dell 1 2 HP 3 3 lenovo 2 4 Apple 10 现在,我想要一个触发器,它触发一个操作并将所有ProductOrders递增1,该值大于或等于插入的ProductOrder 例如,我正在插入一条Id为5 Product=Sony,ProductOrder=

我正在对一个包含三列和几行数据的SQL表执行一些插入操作。这三列是
Id、Product、ProductOrder
,包含以下数据

Id Product ProductOrder
1  Dell     1
2  HP       3
3  lenovo   2
4  Apple    10
现在,我想要一个触发器,它触发一个操作并将所有ProductOrders递增1,该值大于或等于插入的ProductOrder

例如,我正在插入一条Id为
5 Product=Sony,ProductOrder=2
的记录,然后它应该查找
ProductOrder
大于或等于2的所有产品,并按
1
递增。因此,
SQL表中的结果数据应如下所示

Id Product ProductOrder
    1  Dell     1
    2  HP       4
    3  lenovo   3
    4  Apple    11
    5  Sony     2
从上面我们可以看到,等于或大于插入值的
ProductOrder
增加了
1
,如
HP、联想、苹果


我可以知道一种实现方法吗?

在插入新产品之前尝试一下:

UPDATE TableName SET ProductOrder = ProductOrder + 1
WHERE ProductOrder <= 2

您还可以为这两个操作创建存储过程。

您可以创建一些触发器,监听插入到表中,并相应地更新
ProductOrder

在我的演示中,我调用您的表
test

create trigger test_trigger on test
for insert
as 
 begin
  declare @order int 
  declare @id int
  select @order = ProductOrder, @id = Id from inserted
  update test 
  set ProductOrder = ProductOrder + 1
  where ProductOrder >= @order and Id != @id
 end

.你试过什么?您总是插入一行还是多行?如果插入倍数,是希望每个记录的数据增加一次,还是每次插入仅增加一次?这个逻辑的应用是什么?这对我来说毫无意义,只是为了做作业吗?很简单。。使用使用“插入”并更新产品订单的insert after触发器。@JiggsJedi。我只是一次插入一条记录。这个逻辑的应用是项目在网页上的显示方式。好吧,除非我插入一个,否则我不会知道productOrder。它可以是任何东西。在这个问题中,我只是把它作为一个例子OK,所以只需在
WHERE
中添加
子句,并排除插入的id。
create trigger test_trigger on test
for insert
as 
 begin
  declare @order int 
  declare @id int
  select @order = ProductOrder, @id = Id from inserted
  update test 
  set ProductOrder = ProductOrder + 1
  where ProductOrder >= @order and Id != @id
 end