使用SQL Server
表1
ID Name
001 Raja
002 Ravi
003 Suresh
004 Kamal
...
我需要创建一个新表并为每个列创建一个标识
尝试查询
insert into table2
select * from table1
预期输出
S.No ID Name
1 001 Raja
2 002 Ravi
3 003 Suresh
4 004 Kamal
...
我创建新表并使S.No列在表中是标识。它正在为每一行创建标识号,然后我删除所有的行,再次插入,但是从下一个数字开始的最后一行创建标识。
实施例
S.No ID Name
1 001 Raja
2 002 Ravi
3 003 Suresh
4 004 Kamal
...
删除所有行,我再次插入。
S.No ID Name
5 001 Raja
6 002 Ravi
7 003 Suresh
8 004 Kamal
...
预期输出
每当我从表中删除所有行时,身份应从1号开始。
需要查询帮助
答案 0 :(得分:4)
这不是身份的运作方式。删除内容不会重置身份字段。你必须重新安置它:
DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0) -- will start from 1
答案 1 :(得分:2)
或者只是截断表格?这也将重置主键 (marc_s:实际上,它正在重置 IDENTITY 值)
TRUNCATE TABLE tablename
答案 2 :(得分:0)
如果你想要S.No列有自动增量并且该值有(最大No + 1),
因此您可以创建标量函数来查找该值并将DefaultValue列设置为此函数并将标识设置为false 。
看看这个样本:
CREATE FUNCTION [dbo].[getmaxno]()
RETURNS int
AS
BEGIN
DECLARE @ResultVar int
SELECT @ResultVar = MAX(no)+1 from dbo.table_1
RETURN @ResultVar
END
ALTER TABLE [dbo].[Table_1] ADD CONSTRAINT [DF_Table_1_no] DEFAULT ([dbo].[getmaxno]()) FOR [no]