如何在SQL Server中重新设置标识列?

问题描述 投票:0回答:4

我在SQL Server中有一个名为Personal_Info的表。该表具有名为Vol_ID的列,并且(Is Identity)属性为Yes

现在我插入约175568行作为测试。然后我删除了大约568行,但是当我再次插入数据时,列Vol_ID从175569开始而不是从175001开始。

我要插入数据,并让列Vol_ID从其中的最后一个数字开始。例如,如果最后一行是15,则即使我已经插入但删除了它,下一行也应该从16开始。

我需要一个存储过程或触发器,该触发器可以强制插入操作填充缺少的ID,检查最后存在的行,然后在存在的行之后检查是否缺少ID,然后填充它。

我有此步骤进行插入



      USE [VolunteersAffairs] 

    go 

    /****** Object:  StoredProcedure [dbo].[AddVolunteer]    Script Date: 05/02/2014      21:12:36 ******/ 
    SET ansi_nulls ON 

    go 

    SET quoted_identifier ON 

    go 

    ALTER PROCEDURE [dbo].[Addvolunteer] @Vol_Name                 NVARCHAR(255), 
                                         @Vol_Zone                 NVARCHAR(255), 
                                         @vol_street               NVARCHAR(255), 
                                         @Vol_Sex                  INT, 
                                         @Vol_Date_of_Birth        DATE, 
                                         @Vol_Home_Phone           INT, 
                                         @Vol_Work_Phone           INT, 
                                         @Vol_Mobile1              INT, 
                                         @Vol_Mobile2              INT, 
                                         @Vol_Email                NVARCHAR(255), 
                                         @Vol_Job                  NVARCHAR(255), 
                                         @Vol_Affiliation          NVARCHAR(255), 
                                         @vol_Education            INT, 
                                         @vol_Education_Place      NVARCHAR(255), 
                                         @vol_Education_Department NVARCHAR(255), 
                                         @vol_Interesting          INT, 
                                         @vol_Notes                NVARCHAR(255), 
                                         @Team_ID                  INT 
    AS 
        INSERT INTO personal_info 
                    (vol_name, 
                     vol_zone, 
                     vol_street, 
                     vol_sex, 
                     vol_date_of_birth, 
                     vol_home_phone, 
                     vol_work_phone, 
                     vol_mobile1, 
                     vol_mobile2, 
                     vol_email, 
                     vol_job, 
                     vol_affiliation, 
                     vol_education, 
                     vol_education_place, 
                     vol_education_department, 
                     vol_interesting, 
                     team_id, 
                     vol_notes) 
        VALUES      (@Vol_Name, 
                     @Vol_Zone, 
                     @vol_street, 
                     @Vol_Sex, 
                     @Vol_Date_of_Birth, 
                     @Vol_Home_Phone, 
                     @Vol_Work_Phone, 
                     @Vol_Mobile1, 
                     @Vol_Mobile2, 
                     @Vol_Email, 
                     @Vol_Job, 
                     @Vol_Affiliation, 
                     @vol_Education, 
                     @vol_Education_Place, 
                     @vol_Education_Department, 
                     @vol_Interesting, 
                     @Team_ID, 
                     @vol_Notes) 

[请帮助我写出丢失的ID

我在SQL Server中有一个名为Personal_Info的表。该表具有称为Vol_ID的列,并且(Is Identity)属性为Yes。现在,我插入了大约175568行作为测试。然后我删除了有关...

sql sql-server sql-server-2008 sql-server-2008-r2
4个回答
2
投票

您需要重新播种身份列,如下所示


2
投票

[您尝试做的不是身份列的用途-不能保证不会有空白,并且删除记录不会重复使用丢失的身份。


0
投票

正如其他人所说,您可以重新设置身份。但是,这仅在最后删除时才有效。填补身份空白将非常具有挑战性,您最终将不得不关闭身份。


0
投票

这是魔术。在插入之前执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.