日期:2014-05-17  浏览次数:20567 次

关于identity的问题?
问题是这样的:
我有一个表,两个字段(id和name),id是设置为identity(从1开始),一开始表里面有10条数据,然后我全删除了,接着我又往里面加数据了,这时id从11开始了,我想问的是,能不能让id从1开始?我知道有一个方法,就是重新建表,但除了这个方法,还有其他的方法吗?

------解决方案--------------------
不用delete,用
TRUNCATE TABLE tb
------解决方案--------------------
同意楼上,如果清空表的话,就用TRUNCATE TABLE tb,自增清零
------解决方案--------------------
用TRUNCATE TABLE tb,清空表,则ID从1开始

sql TRUNCATE 和 delete 的区别
------解决方案--------------------
delete后,删除自增列,重新添加自增列试试!
------解决方案--------------------
谢谢,指点对我的帮助很大
------解决方案--------------------
SQL code
use Tempdb
go
create table T1(ID int identity)

insert T1 default values;

delete T1
go
dbcc checkident('T1',reseed,0)
go
insert T1 default values;
go
select * from t1

------解决方案--------------------
SQL code
--1. 下面的代码演示了回滚事务导致标识值不连续的情况:

--a.手工回滚事务

CREATE TABLE #(id int IDENTITY(0,1),b int)

INSERT # SELECT 1

 

--手工事务回滚

BEGIN TRAN

    INSERT # SELECT 2

ROLLBACK TRAN

INSERT # SELECT 2

SELECT * FROM #

DROP TABLE #

/*--结果

id           b 

----------------- ----------- 

0           1

2           2

--*/

GO

 

--b. 因操作失败自动回滚事务

CREATE TABLE #(id int IDENTITY(0,1),b int UNIQUE)

INSERT # SELECT 1

 

--违反惟一键约束,插入失败而导致自动回滚事务

INSERT # SELECT 1

INSERT # SELECT 2

SELECT * FROM #

DROP TABLE #

/*--结果

id           b 

----------------- ----------- 

0           1

2           2

--*/

GO

 

 

 

/*===================================================*/

------解决方案--------------------
探讨
SQL code
use Tempdb
go
create table T1(ID int identity)

insert T1 default values;

delete T1
go
dbcc checkident('T1',reseed,0)
go
insert T1 default values;
go
select * from t1

-------……

------解决方案--------------------
truncate很好。