我在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行作为测试。然后我删除了有关...
您需要重新播种身份列,如下所示
[您尝试做的不是身份列的用途-不能保证不会有空白,并且删除记录不会重复使用丢失的身份。
正如其他人所说,您可以重新设置身份。但是,这仅在最后删除时才有效。填补身份空白将非常具有挑战性,您最终将不得不关闭身份。
这是魔术。在插入之前执行此操作。