2009-09-25 3 views
2

SQL 2008 Developer Edition과 Sql2005 호환성 모드의 DB를 사용하여 ASP.Net/MVC 응용 프로그램을 구축하고 있습니다. Entity Framework를 DAL로 사용.신원 열 값의 MS-SQL 채우기

제 문제는 송장 번호와 같이 정수 ID 열을 사용하는 테이블이 있습니다. 즉, 항상 고유하고 재사용하지 않아야합니다. 따라서 GUID 열 유형을 사용하면 상당한 노력을 기울이지 않아도 작동하지 않습니다.

내가 보는 것은 DB가 ID 열의 틈을 채우고 있다는 것입니다. 이것은 나를 장기적인 문제로 만들 것입니다. 이 "채우기"를 사용하지 않도록 설정할 수 있습니까?

답변

1

SQL Server는 기본적으로 ID 필드의 틈을 채우지 않습니다. 기본적으로 행을 삽입하면 숫자가 계속 올라갑니다.

신원을 1로 다시 설정할 수 있으므로 설명하는 내용을 볼 수 있습니다.

문제를 보여주는 코드/db 구조를 게시하고 신원 확인을 수행 한 코드를 검색 할 것을 제안 할 수 있습니까?

+0

빠른되고 있지만, DB의 데이터보고를 들면, 그것은 확실히처럼 보이지 않는다. 그러나 모든 사람의 의견을 읽은 후에 다시 돌아가서 일을 다시 확인하고 제대로 작동합니다. 감사. –

3

SQL 서버 외부의 것으로 들립니다. SQL 서버는 테이블을 다시 시드하지 않는 한 ID에서 갭을 "다시 사용"하지 않고 재사용하지 않지만 맹목적으로 하나씩 증가하고 기존 값이있는 행에 도달 할 때 많은 중복 키 오류를 반환합니다.

열이 신원인지 확인 하시겠습니까? 행을 만들 때 키를 다시 할당하거나 ID 삽입 기능을 켜는 다른 방법이 있습니까?

+0

일이 내가 무슨 생각입니다 :) –

0

문제를 올바르게 이해하지 않는 한. ID 컬럼이나 고유 제한 조건에 기본 키를 작성하면 중복 값의 문제점을 피할 수 있습니다. 예를 들어

:

create table TableName 
(
    InvoiceID int identity(1,1) not null primary key 
)