2017-03-18 17 views
0

SQLの文字列 no.like(c000、c0001 .......)の連続した系列を生成する関数をsqlで取得しました。しかし、私はテーブルのすべてのデータを削除すると、それは最後に生成されたから開始します。私はそれが "c0000"からその値をリセットしたい。次のようにすべてのデータが削除された後にSQL ServerのAutoIncrementをリセットする方法

コードは: - 予め

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) 

おかげ....

EDIT 1 - 最後の値に基づいてインクリメントして更新する方法

。最後のエントリがない場合は、 c0053、このレコードを削除したので、次のエントリを追加するときには "C0054"ではなく "C0053"の値が必要です。

おかげ

答えて

1

TRUNCATE表

は、個々の行の削除をログに記録することなく、テーブルまたはテーブルの指定されたパーティションからすべての行を削除します。 TRUNCATE TABLEはWHERE句のないDELETE文に似ています。ただし、TRUNCATE TABLEは高速であり、使用するシステムリソースとトランザクションログリソースがより少なくなります。

TRUNCATE TABLEのお客様

またはビルド機能を削除してください。

+0

にアイデンティティをリセットするには、このコマンドを使用することができます削除した後、これは**のみ**動作します - むしろまともに設計されたDBデザインではありそうもない.... –

1

私の提案は、あなたがテーブルを切り捨てるいけない理由データのすべての行を削除する代わりにです。

あなたは切り捨て表している場合は、自動的にテーブルを切り捨てて、そのテーブルからすべてのレコードを削除します。この例で0

TRUNCATE TABLE your_table_name; 

にあなたの自動インクリメントをリセットします。また、あなたの自動インクリメントを休ませる。

SQL TRUNCATE TABLEのコマンドは、この方法を試してみて、既存のテーブル

から完全なデータを削除するために使用されます。あなたを助けるかもしれない。

1

Truncate TableコマンドはIdentityをリセットするのに適していますが、レコードを削除した後にIdentityをリセットするコマンドもあります。

DBCC CHECKIDENT (TableName, RESEED, 0) 

他のテーブルに外部キーを経由して `Customers`テーブルを参照されていない場合は0もちろん

関連する問題