我在SQL Server中有一个名为personal_info
的表。t此表有一个名为vol_id
的列,(Is Identity)
属性为yes
。
现在我插入了大约175568行作为测试。然后我删除了大约568行,但是当我再次插入数据时,列vol_id
从175569开始,而不是从175001开始。
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)
请帮我写一下丢失的身份证
您需要重新插入标识列,如下所示
DBCC CHECKIDENT(Personal_Info, RESEED, 175001)
从MSDN引用
权限:
create procedure sp_insert-person
@name varchar(10)
as
begin
declare @last_id int;
select @last_id = top 1 Vol_ID from Personal_Info order by Vol_ID desc;
insert into Personal_Info(Vol_ID,name)
values(@last_id+1,@name);
end
exec sp_insert-person @name = 'user2251369'
您的最终过程应该如下所示
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
BEGIN
DECLARE @last_vol_id int;
select top 1 @last_vol_id = Vol_ID from Personal_Info order by Vol_ID desc;
insert into Personal_Info
(Vol_Id,
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
(@last_vol_id+1,
@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);
END
我有以下标题 这是抛出一个例外,而当我从邮递员那里做同样的事情时,它是有效的。奇怪的是,当我从我的应用程序运行这个时,我只在选项中出错,也就是说,甚至我的调用都没有被调用,我在我的响应中看不到任何标题。 有人能建议我帮忙吗?谢谢。
我不小心从表中删除了我的记录。此记录有一个键列与数据库中的一些其他表绑定。我已经恢复了数据库,我可以访问以前删除的记录。当我尝试使用INSERT SELECT方法时,我得到的消息然后,我对所有列运行INSERT(但在表设计中标识设置为yo YES的第一列除外)。现在我在想有没有办法更新钥匙?新记录自动生成新密钥,我想将该值更新为旧密钥。以下是示例: 临时/备份表: 用临时列i_key值更新当前列i
在DB2中,这可以通过下面的查询来完成,但我在HSQLDB中找不到实现这一点的方法 下面是我能看到的表SYSTEM_COLUMNS的列,我无法确定其中哪一个将表明它是一个标识列 类型_SUB 输入你的名字 表_方案 TABLE_NAME TABLE_CAT SQL_DATETIME_SUB SQL_数据_类型 SOURCE_DATA_TYPE 范围表 范围和模式 示波器 备注 序数位置 基数 可数
考虑使用默认参数值的Python中的以下类方法定义: 然后,用户可以在没有参数的情况下调用它,就像 结果:参数值被默认值替换。 想象一下,在这种情况下,你想告诉用户这样的事情: 问题:有没有办法回溯以某种方式拦截以识别它(除了简单地将此初始化和验证逻辑移动到构造函数方法之外)?
问题内容: 在PostgreSQL中,我可以做这样的事情: 是否有Oracle等效产品? 问题答案: 这是一个很好的过程,可以将Oracle专家Tom Kyte的任何序列重置为0 。在下面的链接中也对正反两方面进行了精彩的讨论。
问题内容: 大家好。我的数据库中有一个表,其中包含约一千条记录。我想重置标识列,以便所有ID都再次按顺序进行。我正在看这个,但我假设它只能在空表上工作 当前表 所需表 提前致谢 问题答案: 最简单的方法是制作当前表的副本,解决所有父代问题,将其删除,然后重命名新表。 您也可以暂时删除并尝试以下操作: 或者,如果您不在乎记录的顺序,则此