`
qiaoxuan9206
  • 浏览: 69987 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

把SQL Server表中的自动编号ID重新开始排列

阅读更多
说法一:

有两种方法:
方法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
分享到:
评论

相关推荐

    详解SQL Server表和索引存储结构

    本文将详细探讨SQL Server中表和索引的存储原理及其如何影响查询速度与效率。 #### 二、SQL Server 表的存储结构 ##### 2.1 堆 - **定义**:堆(Heap)是一种不含有聚集索引的表。在堆中,数据没有按照任何特定的...

    SQL Server 不删除信息重新恢复自动编号列的序号的方法

    在SQL Server中,当我们在一个表中使用了自动编号(Identity)列来为新插入的行生成唯一的标识符时,可能会遇到这样的情况:在测试或数据清理后,想要重置这个序列,以便再次从头开始计数。这个问题的焦点在于如何在...

    SQLSERVER 事务日志详解

    在`SQLSERVER 事务日志详解-华仔论坛.doc`文档中,可能会包含以下内容: 1. `fn_dblog`的使用示例,展示如何查询特定事务的历史操作。 2. 对`fn_dblog`返回的关键列的详细解释,帮助理解日志记录的含义。 3. 图形化...

    SQL Server 2005 提供了4个行号排序函数

    ### SQL Server 2005 行号排序函数详解 #### 一、引言 在数据库操作中,经常需要对查询结果进行排序处理,尤其是在实现数据分页时。SQL Server 2005 引入了一系列窗口函数,其中行号排序函数在数据排序和分页方面...

    SQLSERVER使用说明

    在SQL Server中,数据库管理和数据查询是其核心功能。SQL(Structured Query Language)是一种用于管理关系数据库的标准语言,包括创建、更新、查询和删除数据。本使用说明将深入讲解SQL Server的基本语法和常用操作...

    SqlServer数据库中的分页语句

    在SQL Server数据库中,分页查询是一个非常重要的功能,它允许我们从大量数据中只获取一部分,例如,每次只返回一页的数据,以提高查询效率和用户体验。本篇将深入探讨SQL Server实现分页查询的语句及其工作原理。 ...

    关于SQL Server SQL语句查询分页数据的解决方案

    例如,从表`Sys_option`(主键为`sys_id`)中从第10条记录开始检索20条记录,可以使用以下SQL语句: ```sql SELECT * FROM ( SELECT TOP 20 * FROM ( SELECT TOP 29 * FROM Sys_option ORDER BY sys_id DESC )...

    oracle rownum 的使用 和sqlserver有区别的!

    - ROWNUM 的值是在数据检索的过程中动态生成的,这意味着它并不依赖于表中的任何字段。 2. **基础查询:** - 直接使用 ROWNUM 进行查询是最简单的应用场景之一。例如: ```sql SELECT ROWNUM, id, name FROM ...

    如何使用SQL Server来过滤数据

    在SQL Server中,过滤数据是数据分析的关键步骤,尤其在处理关系型数据库时。规范化是数据库设计的基本原则,目的是减少数据冗余,确保数据的一致性和完整性。规范化要求数据以键值关联的方式存在于不同表中,避免了...

    SQL Server分组排序取数据的实现

    在SQL Server中,分组和排序是数据处理的两个关键操作。它们可以帮助我们对大量数据进行聚合、组织和筛选,以便更好地分析和理解数据。本文将深入探讨如何在SQL Server中实现分组排序并获取每组的特定行数据。 首先...

    SQL Server 索引结构及其使用(聚集索引与非聚集索引)

    在实际应用中,因为 ID 号是自动生成的,我们并不知道每条记录的 ID 号,所以我们很难在实践中用 ID 号来进行查询。这就使让 ID 号这个主键作为聚集索引成为一种资源浪费。 聚集索引和非聚集索引是 SQL Server 中两...

    数据库sqlserver攻关

    ### 根据id由小到大排列,自动把jilu中为null的值补为上一条记录的值结果为,求用sql怎么实现 这是一个需要使用SQL Server的窗口函数(如LAG)来实现的功能,通过在SELECT语句中应用窗口函数,可以访问当前行的前一...

    sqlserver排名次若干种方法

    在SQL Server中,对特定字段进行排序和排名是一种常见的需求。本文将详细探讨几种实现这一功能的方法,并针对不同的业务场景提供解决方案。 #### 场景概述 假设我们有一张表,其中包含一个字段`a`,该字段存储从0...

    sqlserver 基本操作指令样例

    在SQL Server中,掌握基本的操作指令是进行数据库管理的基础。以下是一些关于SQL Server基本操作指令的知识点: 1. **创建数据库**: 使用`CREATE DATABASE`语句创建新的数据库。例如: ``` CREATE DATABASE ...

    sql server 2008 存储过程示例带游标

    `这行代码声明了一个游标`cur`,用于从表`tb_st_channelPresent`中选择所有`overTime`为空的记录,并按`id`降序排列。 3. **打开和遍历游标**:通过`OPEN cur`和`FETCH NEXT FROM cur INTO @keyid`语句,打开游标并...

    常用SQLserver语句集锦

    在SQL Server数据库管理系统中,SQL(Structured Query Language)是一种用于管理关系数据库的标准语言。它包括数据查询、数据更新、数据插入和数据删除等操作。以下是一些常用的SQL语句及其详细解释: 1. **INSERT...

    sqlserver分页器

    简易的sqlserver分页功能,只需要将页码传入即可,默认id倒序排列,一页十条,也可以通过传入不同参数,对不同字段,进行正序或倒序排列。 使用方法:1、将该类导入实体类包中 2、在需要分页的地方创建该类对象,并...

    SQLServer性能优化解析说明

    然而,每张表只能有一个聚簇索引,创建时需要额外空间,并且在频繁插入操作的表上,如果选择单调递增的列(如自动增长ID)作为聚簇索引,可能会引发封锁冲突。选择聚簇索引的依据包括:主键列、按范围访问的列、用于...

    SQL SERVER 一些操作命令

    在SQL Server管理数据库的过程中,掌握一些基础的SQL命令是至关重要的。这些命令涵盖了查询系统信息、分析存储空间、维护数据库日志以及数据清理等多个方面。接下来,我们将详细讲解标题和描述中涉及的知识点。 ...

    SQL SERVER存储过程范例

    在SQL Server中,存储过程是一种预编译的SQL语句集合,可以用来执行特定的任务,提高数据库操作的效率和安全性。下面将详细解释标题和描述中提到的"SQL SERVER存储过程范例",并结合提供的代码片段进行分析。 首先...

Global site tag (gtag.js) - Google Analytics