2014-03-03 2 views
0

가이 데이터베이스에 약 200 개 이상의 레코드가있는 테이블이 있습니다. 예를 들어, 기본 키 (ID 열)가 25 인 레코드를 삭제하면 pk 열이 23,25,26,27 ...이됩니다.업데이트 ID 레코드가있는 테이블의 열

사용할 수있는 명령이 있습니까? 전체 테이블의 ID 열을 업데이트 하시겠습니까? DBCC 명령은 내가 찾고있는 것이 아닙니다 ... 둘 다 "set identity_insert YourTable ON" 내 문제가 해결되었습니다.

전체 테이블을 자르고 모든 데이터를 다시 입력해야합니까? db에 200k 행이 있으면 어떻게됩니까? 이 솔루션은 비실용적입니다.

P. PK 열을 serialize해야하는 이유를 묻지 마십시오. 내 고객의 요구 사항. SQL Server 2012를 사용하고 있습니다.

+2

아니요, 당신은 ** 할 수 없으며 **해야합니다 ** 이렇게하면 ** 리사이클 * ID 등의 ID 값을 갖게됩니다. 25 행에 의해 사용되었습니다 당신은 나중에 그것에게 새로운 의미를 제공합니다. 정말 *** 정말 *** 나쁜 생각! 이것을하지 마십시오. 일단 'IDENTITY'값이 전달되면 사라집니다. 재활용하지 마십시오. 고객에게 그의 요구 사항을 조정하라고 말하십시오 .. .. –

답변

1

아니요, Identity 열을 다시 직렬화 할 수 없습니다. 저장 프로 시저 (INSERT)를 사용하여 고유 한 식별 열 (자동 증가 열)을 만들 수 있습니다. Identity 열과 마찬가지로 작동하므로 점프에 대해 걱정할 필요가 없습니다.

1

IDENTITY는 값이 고유 한 것으로 보장하며 사용자의 경우와 같이 일련 화되지는 않습니다.

모든 데이터를 임시 테이블에 복사하고 다시 복사해야 IDENTITY 열 (AFAIK)을 업데이트 할 수 없습니다.

값을 업데이트해야하는 경우 디자인을 변경하고 간단한 int 열로 만들고 기본 키를 만들어야합니다. 그것은 당신의 미래 문제를 해결할 것입니다.

하지만 클라이언트에게 이야기하고 우선 순위가 무엇인지, 그리고 실제로 필요한 경우 직렬화 된 값이 필요한지 확인해야합니다. 클라이언트/주문/제품 등에서 식별자를 '재활용'하는 것은 나쁜 습관입니다.

관련 문제