设为首页 收藏本站
查看: 324|回复: 0

[经验分享] 把SQL Server表中的自动编号ID重新开始排列

[复制链接]

尚未签到

发表于 2016-11-8 09:23:06 | 显示全部楼层 |阅读模式
说法一:

有两种方法:
方法1:
truncate table 你的表名 --这样不但将数据删除,而且可以重新置位identity属性的字段。


方法2:
delete from 你的表名
dbcc checkident(你的表名,reseed,0) 重新置位identity属性的字段,让其下个值从1开始


说法二:

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

说法三:

如何定义自动编号字段的初始值和步进值?

问题:

如何定义自动编号字段的初始值和步进值?
如何定义自动增加字段的初始值和步进值?
如何使删除过数据的自动增加字段的开始值重新从1开始?

回答:

通过以下语句,你可以在建表的时候指定其起始值和步进值:

CREATE TABLE tblNewOrder2 (
  OrderId AUTOINCREMENT (1000, 10),
  ItemId LONG, Quantity LONG)  



你也可以用下面的语句修改下一个起始值和步进值:

ALTER TABLE tblOrder
  ALTER COLUMN OrderId COUNTER (2000, 50)  


要重新开始:
ALTER TABLE tableName
  ALTER COLUMN OrderId COUNTER (1, 1)  


在 VBE 界面里面用以下代码:
docmd.runsql "ALTER TABLE tableName ALTER COLUMN OrderId COUNTER (1, 1)"



这里要注意的是自动编号往往被用作标识记录的唯一性,但是 Jet 在用 DDL 语句更改自动编号的同时不会保证修改后的自动编号仍然保持唯一性,因此会出现标识号重复的现象。要避免这一现象最好把自动编号设定为主键、或者不可重复。

Please realize that Jet won't prevent you from altering AutoNumber seed and increment values that produce duplicate values. However, if the AutoNumber column has been designated as the primary key or it contains a unique index, you will be prevented from saving rows with duplicates.

不过这些操作需要 JET 4.0。

如果不会用查询或者 JET SQL 去参考以下文章中的动画
http://access911.net/index.asp?board=4&recordid=77FAB11E1ADC

如何用查询设计向导建立一个查询
http://access911.net/down/eg/swf/createquery.swf

如何运行一段 jet sql 代码
http://access911.net/down/eg/swf/runsql.swf

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-297239-1-1.html 上篇帖子: 如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的脚本 下篇帖子: SQL-DMO简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表