如何让自增型的字段复位??

beggy 2003-12-12 09:24:45
表A中有自增型的字段 sys_id

sys_id f1 f2
1 a 男
2 b 女
3 c 男
4 d 男

当把表中的记录全部删除,然后再添加新记录的时候sys_id
从5开始,用什么命令可以让sys_id 从1开始,即让sys_id复位
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
beggy 2003-12-12
  • 打赏
  • 举报
回复
to 中海,干活去,别在CSDN玩耍!:
可先删除自增字段,再新建它就行了。

答: 如果我有很多这样的表(70多个)要改,新建会很麻烦.

不过,一般可不必进行这样的所谓“复位”的操作。

答: 我测试程序的时候,会增加自增型字段(sys_id)的值.虽然用delete from 删除了数据,但新增数据的时候sys_id没有从1开始.我想用户使用系统的时候,标识从1开始.
zjcxc 2003-12-12
  • 打赏
  • 举报
回复
或者删除自增字段,再加上
beggy 2003-12-12
  • 打赏
  • 举报
回复
谢谢各位,TRUNCATE TABLE 的方法很好用!
victorycyz 2003-12-12
  • 打赏
  • 举报
回复
可先删除自增字段,再新建它就行了。
不过,一般可不必进行这样的所谓“复位”的操作。
im_yh 2003-12-12
  • 打赏
  • 举报
回复

1.TRUNCATE TABLE
删除表中的所有行,而不记录单个行删除操作。

语法
TRUNCATE TABLE name

参数
name

是要截断的表的名称或要删除其全部行的表的名称。

注释
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

TRUNCATE TABLE 不能用于参与了索引视图的表。

2.
DBCC CHECKIDENT
检查指定表的当前标识值,如有必要,还对标识值进行更正。

语法
DBCC CHECKIDENT
( 'table_name'
[ , { NORESEED
| { RESEED [ , new_reseed_value ] }
}
]
)

参数
'table_name'

是要对其当前标识值进行检查的表名。表名必须符合标识符规则。有关更多信息,请参见使用标识符。指定的表必须包含标识列。

NORESEED

指定不应更正当前标识值。

RESEED

指定应该更正当前标识值。

new_reseed_value

是在标识列中重新赋值时要使用的值。

注释
如有必要,DBCC CHECKIDENT 会更正列的当前标识值。然而,如果标识列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 语句中)创建的,则不更正当前标识值。

如果标识列上有主键或唯一键约束,无效标识信息可能会导致错误信息 2627



shuiniu 2003-12-12
  • 打赏
  • 举报
回复

TRUNCATE TABLE
删除表中的所有行,而不记录单个行删除操作。

语法
TRUNCATE TABLE name

shuiniu 2003-12-12
  • 打赏
  • 举报
回复
DBCC CHECKIDENT
检查指定表的当前标识值,如有必要,还对标识值进行更正。

语法
DBCC CHECKIDENT
( 'table_name'
[ , { NORESEED
| { RESEED [ , new_reseed_value ] }
}
]
)

参数
'table_name'

是要对其当前标识值进行检查的表名。表名必须符合标识符规则。有关更多信息,请参见使用标识符。指定的表必须包含标识列。

NORESEED

指定不应更正当前标识值。

RESEED

指定应该更正当前标识值。

new_reseed_value

是在标识列中重新赋值时要使用的值
pengdali 2003-12-12
  • 打赏
  • 举报
回复
有兩種方法:
方法1:
truncate table 你的表名 --這樣不但將數據刪除,而且可以重新置位identity屬性的字段。

方法2:
delete from 你的表名
dbcc checkident(你的表名,reseed,0) --重新置位identity屬性的字段,讓其下個值從1開始

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧