我有一个表,其中包含3列:
id,优先级,dict_id
对于每个dict_id,它具有最高1000优先级,从1(顺序)开始。 当我删除某些优先级时,如何使优先级列的值连续(不使用触发器)。 例如: 原始数据
id, priority, dict_id
1, 1, 1
2, 2, 1
3, 3, 1
4, 4, 1
5, 5, 1
6, 6, 1
删除ID 3和5后,表中的数据:
id, priority, dict_id
1, 1, 1
2, 2, 1
4, 4, 1
6, 6, 1
我想要这样的优先级列
id, priority, dict_id
1, 1, 1
2, 2, 1
4, 3, 1
6, 4, 1
答案 0 :(得分:1)
我不建议您这样做,因为在您使用Header = (MyCollection.Count > 1 ? "Items" : "Item");
进行查询时,例如可以很容易地生成带有所需顺序的priority
列,例如
ROW_NUMBER
您可能希望避免每次在表中添加/删除记录时都要支付频繁的DML罚款。
答案 1 :(得分:1)
您可以使用UPDATE FROM
语法
UPDATE yourtab a
SET priority = s.priority
FROM (SELECT id,
row_number()
OVER (
ORDER BY id) priority
FROM yourtab) s
WHERE a.id = s.id;