2017-04-04 54 views
0

我有下面的代码,其中我为每行包含当前代码和以前的代码分配一个唯一的ID。它似乎工作正常,但我的问题是,如果我有一个新代码更新的文件,我该如何恢复从它被遗漏的唯一ID?向现有表添加额外的唯一行ID

例如,如果我添加这些额外的行,如何填充以黄色突出显示的以下ID?

Example

CREATE PROCEDURE [dbo].[PI_Key_Create_Update] AS 
BEGIN 
Truncate Table RB_PI_Key_Assign 
Truncate Table RB_PI_Key_Link 

INSERT INTO RB_PI_Key_Assign 
SELECT 
ROW_NUMBER() OVER (ORDER BY RB_Code_L) AS PI_Key 
, RB_Code_L 
, RB_Code_L_P 
FROM Stage_RB_Previous 

INSERT INTO RB_PI_Key_Link 
SELECT 
    a.PI_Key 
, b.PI_Key as PI_KEY_P 
, a.RB_Code_L 
, a.RB_Code_L_P 

FROM RB_PI_Key_Assign a LEFT JOIN RB_PI_Key_Assign b ON (a.RB_Code_L_P=b.RB_Code_L) 

END 

感谢

+0

为什么你的ID字段不是身份种子,所以你不必手动维护它们? – maSTAShuFu

回答

0

首先这种类型的列的应该是种子的身份或自动递增。你不需要维护它们。

没有什么特别的,如果你有他们手动更新没有理由的。

+0

感谢maSTA。我希望独一无二的ID保持与其生命中的一排。如果我更新表,但行的顺序不同,身份标识是否会更改? – Myx

+0

身份不会改变,如果您更改此字段的行为,它将自动增加。如果截断表格,它只会重置为1。给它一个干净的石板截断表,并根据你的顺序插入行 – maSTAShuFu