2017-03-18 75 views
0

我在sql中获得了一个函数,生成序列字母数字序列 no.like(c000,c0001 .......),这是工作良好。但是当我删除表中的所有数据时,它从最后生成的no开始。我希望它从“c0000”重置它的值。如何重置所有数据后在SQL Server中的自动增量删除

代码如下: -

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”。

感谢

回答

1

TRUNCATE TABLE

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

TRUNCATE TABLE客户

或删除您的构建功能。

+0

当然后,这个** **只有在没有其他表通过一个外键引用了'客户'表工程 - 宁不太可能在任何设计得体的DB设计中...... –

1

我的建议是不是删除你为什么不所有数据行截去表。

如果你是截断表,它会自动您的自动递增重置为0

TRUNCATE TABLE your_table_name; 

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

的SQL TRUNCATE TABLE命令用于从现有的表

删除完整的内容尝试这种方式。可以帮助你。

1

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

DBCC CHECKIDENT (TableName, RESEED, 0) 

删除您可以使用此命令身份重置为0

相关问题