1

使用 SQL Server 2008,使用 MS Visual Studio 2012 C# .NET4.5

上周我问了一个类似的问题,通过以下查询解决了这个问题:

DECLARE @from int = 9, @to int = 3

UPDATE MainPareto 
SET pareto = m.new_pareto
FROM (
SELECT pKey, -- this is your primary key for the table
new_pareto = row_number() 
over(ORDER BY   CASE WHEN pareto = @from THEN @to ELSE pareto END, 
                CASE WHEN pareto = @from THEN 0 ELSE 1 END)
FROM MainPareto
-- put in any conditions that you want to restrict the scores by.
WHERE PG = @pg AND pareto IS NOT NULL
-- end condtions
) as m
INNER JOIN MainPareto ON MainPareto.pKey = m.pKey
WHERE MainPareto.pareto <> m.new_pareto

如您所见,这很好用,在进行更改时会增加“联盟”。
现在,在某些功能用户请求删除和恢复之后。

在我的 winform 上,用户可以右键单击网格并删除“零件”编号。

如果需要,用户也可以恢复。

但是,我需要一个存储过程,它将在从另一个存储过程中删除之后像这种方法一样使用网格和更新,我的 Winform 会对该部分进行排序,但我确实需要一个可以完成我当前的过程的过程删除。

希望你们理解,如果不问我,我会尽力澄清。

4

1 回答 1

0

我不完全确定这是否是您要查找的内容,但这就是您可以重新设置主键列的方法(如果您的主键也是identity)。请注意我在截断后的插入不包括第 1 列(主键列)。

select *
into #temp
from MainPareto

truncate table MainPareto

insert into MainPareto (col2, col3, col4) --...
    select col2, col3, col4 --...
    from #temp
于 2013-06-06T22:17:59.143 回答