【问题标题】:how to Reset AutoIncrement in SQL Server after all data Deleted删除所有数据后如何在 SQL Server 中重置 AutoIncrement
【发布时间】:2017-08-09 19:38:53
【问题描述】:

我在 sql 中得到了一个函数,它生成一系列连续的字母数字 no.like (c000,c0001 .......) ,效果很好。但是当我删除表中的所有数据时,它从最后生成的编号开始。我希望它从“c0000”重置它的值。

代码如下:-

create table Customers
(
dbID int identity not null primary key,
CustomerName varchar(100)
)

 create function CustomerNumber (@id int) 
  returns char(5) 
  as 
 begin 
 return 'C' + right('0000' + convert(varchar(10), @id), 4) 
  end

  alter table Customers add CustomerNumber as dbo.CustomerNumber(dbID)

提前谢谢....

编辑 1 -

如何更新它以根据最后一个值递增。表示如果最后一个条目没有。 c0053,我删除了这条记录,所以当下一个条目添加时,它的值应该是“C0053”而不是“C0054”。

谢谢

【问题讨论】:

    标签: sql-server-2005 auto-increment


    【解决方案1】:

    Truncate Table 命令是重置身份的好方法,但还有其他命令也可以在删除记录后重置身份。

    DBCC CHECKIDENT (TableName, RESEED, 0)
    

    删除后,您可以使用此命令将 Identity 重置为 0。

    【讨论】:

      【解决方案2】:

      我的建议不是删除所有数据行,为什么不截断表格。

      如果您截断表格,它会自动将您的自动增量重置为 0

      TRUNCATE TABLE your_table_name;
      

      此示例将截断表并从该表中删除所有记录。并休息你的自动增量。

      SQL TRUNCATE TABLE 命令用于从现有表中删除完整数据

      试试这个方法。可以帮到你。

      【讨论】:

        【解决方案3】:

        截断表格

        从表或表的指定分区中删除所有行,而不记录单个行删除。 TRUNCATE TABLE 类似于没有 WHERE 子句的 DELETE 语句;但是,TRUNCATE TABLE 速度更快,使用的系统和事务日志资源更少。

        截断表客户

        或删除您的构建功能。

        【讨论】:

        • 当然,这在没有其他表通过外键引用Customers 表的情况下有效 - 在任何设计得体的数据库设计中都不太可能......
        猜你喜欢
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 2011-04-10
        • 2023-04-01
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        相关资源
        最近更新 更多