2017-03-18 4 views
0

나는 좋은 숫자로 표시되는 일련 번호의 알파벳 ()을 생성하는 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) 

덕분에 ....

편집 1 -를 업데이트하는 방법

가 마지막 값에 따라 증분. 마지막 항목이 없으면. c0053, 그리고이 레코드를 삭제 했으므로 다음 항목을 추가 할 때 "C0054"가 아닌 "C0053"값을 가져야합니다.

감사

답변

1

TRUNCATE 표

개별 행 삭제를 기록하지 않고, 테이블 또는 테이블의 지정된 파티션의 모든 행을 제거한다. TRUNCATE TABLE은 WHERE 절이없는 DELETE 문과 유사합니다. 그러나 TRUNCATE TABLE은 더 빠르며 더 적은 시스템 및 트랜잭션 로그 자원을 사용합니다.

TRUNCATE TABLE 고객

또는 빌드 기능을 제거하십시오.

+0

에 아이덴티티를 재설정하려면이 명령을 사용하여 삭제 후

DBCC CHECKIDENT (TableName, RESEED, 0) 

,이 ** 만 ** 다른 테이블에 외래 키를 통해''고객 테이블을 참조하지 않을 경우 작동 - 대신 잘 설계된 DB 디자인에서는 거의 없을 것입니다 .... –

1

내 제안은 대신에 모든 데이터 행을 삭제하는 이유 테이블을 자릅니다. 당신이 잘라 내기 테이블 인 경우

는 자동으로 테이블을 절단하고 그 테이블의 모든 레코드를 제거 할 0

TRUNCATE TABLE your_table_name; 

이 예에 자동 증가를 재설정합니다. 자동 증가도 휴식하십시오.

는 SQL TRUNCATE 표 명령은이 방법을 사용해보십시오 기존 테이블

에서 완전한 데이터를 삭제하는 데 사용됩니다. 당신을 도울 수 있습니다.

1

잘라 내기 테이블 명령은 Identity를 재설정하는 좋은 방법이지만 레코드 삭제 후 Identity를 재설정하는 다른 명령도 있습니다. 당신이 0 물론

관련 문제