我有一张桌子:
item_id : int
image_id : int
position : int
对于每个PRIMARY KEY元组(item_id,image_id),都有一个唯一的位置,该位置没有空洞排序:
item_id image_id position
1 10 0
1 21 1
1 17 2
1 113 3
删除(1,21)以保持正确排序的最佳方法是什么?我正在寻找最简单的SQL查询。
答案 0 :(得分:0)
你可以创建更新你的桌子的触发器:
此触发器将被触发,并在删除任何行后更新位置列:
CREATE TRIGGER trigName ON TableName
AFTER DELETE
AS
UPDATE T
SET t.position = n.position
FROM TableName AS T
INNER JOIN (SELECT itemID,imageID, ROW_NUMBER() OVER(ORDER BY id) - 1 as Position FROM TableName) as N ON t.itemID = n.itemID AND t.imageID = n.ImageID
GO