Sql 使用游标更新现有架构
我正在尝试更改现有架构以添加新列 这是我的案子-Sql 使用游标更新现有架构,sql,sql-server,Sql,Sql Server,我正在尝试更改现有架构以添加新列 这是我的案子- Order列的值是int,如果我正在分组TemplateId,它应该表示UI上项目的顺序从1到COUNT(Id) 我看到了两种可能的解决方案-生成订单计算字段或使用光标更新它 哪一个更好?如果使用游标win进行更新- 我可以知道如何进行此类更新吗?我可以想到的一个方法是: 启动交易 插入除顺序之外的列 更新表格以设置订单值 如果一切正常,则提交事务,否则回滚 这样做不需要直接处理游标,而且操作在某种程度上是原子的,因为它包装在事务块中 更新本身可
Order
列的值是int,如果我正在分组TemplateId
,它应该表示UI上项目的顺序从1到COUNT(Id)
我看到了两种可能的解决方案-生成订单
计算字段或使用光标更新它
哪一个更好?如果使用游标win进行更新-
我可以知道如何进行此类更新吗?我可以想到的一个方法是:
;with ord as
(Select id, row_number() over (partition by templateid order by selectedfieldid) rn from yourtable)
Update dbo.titlefields
Set order = rn - 1 --ROW_NUMBER() starts at 1 but we want to start at 0
From dbo.titlefields t inner join
ord x on t.id = x.id
请告知我是否正确理解了您的要求,如果没有,我将更新我的答案。订单栏的最终用途是什么?还显示订单的报告?不,订单是技术栏。它永远不会显示在UI或repost上这是实现它的方法,但我正在寻找一个解决方案,如何计算[订单]的值这里是我所拥有的-这里是我想要得到的-好的,我编辑了我的代码以满足您的要求。一定要让我知道结果。是的,就是这样。非常感谢。