이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 12402|회답: 3

[출처] SQL Server 데이터베이스에서 자가 성장 ID 열의 연산 메서드를 업데이트하세요

[링크 복사]
게시됨 2018. 8. 23. 오후 12:20:44 | | | |
일상적인 SQL 서버 개발에서 Identity 타입의 식별 열은 종종 테이블 구조의 자기 성장 숫자로 사용됩니다. 예를 들어, 물건 번호, 기록 일련번호 등이 있습니다. 자가 성장하는 식별된 열에 대한 참조는 데이터베이스 프로그램 개발을 크게 돕지만, 때로는 이 고집스러운 필드 유형이 문제를 일으킬 수도 있습니다.

1. 식별 열의 필드 값을 수정합니다:

때때로 함수를 구현하기 위해 Identity self-growing 타입의 필드 값을 수정해야 하지만, 아이덴티티 컬럼의 타입 때문에 기본적으로 허용되지 않습니다. 예를 들어, 데이터베이스에 정상적으로 5개의 데이터가 추가되었는데 2개가 삭제되었다면, 데이터를 다시 추가하면 자가 성장 식별 열에 자동으로 6 값이 할당되지만, 데이터를 삽입할 때 3을 할당하고 싶다면 기본적으로 허용되지 않습니다. 이 필드의 값을 바꾸고 싶다면, 식별 필드 값의 삽입을 완전히 제어할 수 있습니다. 여전히 방법들이 있습니다, 하하.

세트 IDENTITY_INSERT /[테이블/] [온| 꺼짐]
위의 문장을 사용하면 테이블 내 자가 성장하는 식별자 열이 자동으로 성장할지, 즉 레코드를 삽입할 때 식별자 열 필드의 값을 수동으로 지정할 수 있는지 쉽게 제어할 수 있습니다. On 방식대로 지정되어 있다면, 삽입 시 식별 열의 값을 지정할 수 있는데, 이 값은 자동으로 증가하지 않습니다. 물론, 이 값을 다 사용하면 기본 상태로 전환하는 스위치를 끄는 문구를 사용해야 합니다. 그렇지 않으면 다음에 데이터를 삽입할 때 할당된 값이 자동으로 증가하지 않습니다.

2. 식별 열의 필드 값을 재설정하기:

데이터 레코드의 일부가 삭제되고 나중에 추가된 새 데이터 레코드가 삭제되면, 식별 열의 값은 큰 유휴 구간을 가지게 되어 매우 불쾌해 보입니다. 테이블의 모든 레코드를 삭제해도 아이덴티티 컬럼의 값은 처음부터 늘어나는 것이 아니라 자동으로 무한히 증가합니다. 자가 성장 필드의 시드 값은 다음 문장을 사용하여 재설정할 수 있습니다:

DBCC CHECKIDENT(TABLE, [RESEED| NORESEED], [1])
위 문장은 지정된 테이블의 시드 값을 1로 초기화하도록 강제합니다. 하지만 시드를 1로 초기화하고 싶지 않다면, 세 번째 매개변수를 원하는 시드 값으로 교체할 수 있습니다. 식별된 시드를 리셋하는 대신 현재 시드를 알고 싶다면, 세 번째 매개변수를 설정하는 대신 NORESEED를 사용해야 합니다.




이전의:SQL Server 2012 자동 성장 컬럼 및 값 점프 문제
다음:Windows가 Redis 서비스를 시작하지 못하고, 오류 1067: 프로세스가 예기치 않게 종료됨.
 집주인| 게시됨 2018. 8. 23. 오후 12:57:08 |
1. 테이블의 모든 데이터가 삭제되면 자동으로 0으로 증가합니다. (테이블 이름을 잘라내는 테이블)

2. 테이블 데이터를 삭제하지 말고, 자동 성장 값을 직접 초기화하세요. ( DBCC CHECKIDENT('TableName', RESEED, 0)
 집주인| 게시됨 2018. 8. 23. 오후 1:01:32 |
 집주인| 게시됨 2019. 2. 13. 오전 9:59:15 |
자기 증가 열의 현재 값을 표에서 확인하세요:
    DBCC CHECKIDENT (TableName)

테이블에서 자기 증가 열의 현재 값을 수정하세요:
    DBCC CHECKIDENT (TableName, RESEED, 값)
    RESEED는 열명이 아니라 고정된 방식으로 작성됩니다.


예를 들어, 분할 테이블에서 자기 증가 열의 현재 값을 30으로 변경하고 싶을 때는 다음 명령을 사용할 수 있습니다
DBCC 체크 (디비전, 재시드, 30)
그다음
DBCC CHECKIDENT (디비전)
현재 값이 30인 것을 볼 수 있습니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com