Sql 触发一个操作以递增int列中大于或等于插入行的所有行
我正在对一个包含三列和几行数据的SQL表执行一些插入操作。这三列是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=
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