2017-03-18 78 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

相關問題