黑马程序员技术交流社区

标题: 关于主键Id字段自增的问题! [打印本页]

作者: 徐刚    时间: 2012-4-6 18:29
标题: 关于主键Id字段自增的问题!
  数据表中设置了Id字段自增,然后delete原先的数据,再insert若干数据,没有办法让Id字段再重新从1开始么?
作者: 张云静    时间: 2012-4-6 18:37
试一下TRUNCATE TABLE 表名
          GO


作者: 张云静    时间: 2012-4-6 18:40
方法2:dbcc checkident ('table_name', reseed, new_reseed_value)  当前值设置为  new_reseed_value。如果自创建表后没有将行插入该表,则在执行  DBCC  CHECKIDENT  后插入的第一行将使用  new_reseed_value  作为标识。否则,下一个插入的行将使用  new_reseed_value  +  1。如果  new_reseed_value  的值小于标识列中的最大值,以后引用该表时将产生  2627  号错误信息(这条没有用过,你可以试试)
作者: 张世豪    时间: 2012-4-6 18:40
你可以把他们update,条件写成where id=××,这样可以保持原来的id
作者: 柏云杉    时间: 2012-4-6 20:20
没有办法  那个自增字段只增不减。插一条数据自增1,
作者: ★心秒★    时间: 2012-4-7 13:12
我目前还不知道怎么减下来。主键一般都不要用来代表有具体意义的东西。主键你最好用GUID,你可新增一个Id字段,来给你的每个成员手动编号……   如果是ADO.Net中的话,你可以使用程序来自动编号,而且也可以随时删掉编号,更改编号,检测编号。很方便的啊!!  用不着那样自增,那样不保险……  最好不要那样用,除非你练习的时候可以用用……
作者: 黄国钢    时间: 2012-4-7 21:48
方法一:如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数
        truncate table 表名
方法二:dbcc checkident ('table_name', reseed, new_reseed_value) ,
  例如:DBCC CHECKIDENT (T_Person,reseed,20) ,当插入数据是id 子动会总21开始,如果原来id有大于20的话,就会出现重复值 报错。
  用这种方法就要确认开始插入id 的值与原来的不会重复。
        
作者: pray    时间: 2014-4-26 03:20
我艹!(此回复虽仅有两个字,却深刻地表达了回复人的深深的祝福与刻骨的情感,可谓言简意赅,一字千金,字字扣人心弦,字字催人泪下,足可见回复人扎实的文字功底和信手拈来的写作技巧及惨绝人环的创新能力。实是佩服佩服!再加上以感叹号收尾,点睛之笔,妙笔生花,意境深远,照应前文,升华主题,把回复人的感情表达得淋漓尽致,给人无限感动和惆怅,有浑然天成之感,实乃回复中之极品,祝福中之绝笔.)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2