문제

2011-03-29 7 views
0

가정하자 내가 가진 나는이 SQL 문을문제

를 사용하여 데이터베이스 (ID = 4, 이름 = dere)에서 네 번째 항목을 삭제하고 그래서

ID Name 
1 RJ 
2 Hello 
3 NV 
4 Dere 
5 What 

같은 테이블

Delete from Table where ID="4" 

다음 그래서 어떤 식 으로든 그쪽이이 테이블의 행을 삭제하지만 표를 볼 때 그것은

ID Name 
1 RJ 
2 Hello 
3 NV 
5 What 

으로 나에게 보인다 나는 테이블에 최대한 빨리 테이블 네 번째 항목

ID Name 
1 RJ 
2 Hello 
3 NV 
4 What 

을 삭제로 다음과 같이 할 것처럼 자동으로 자동 증가 ID를 업데이트 t를 희망 당신은 내 질문을 알고 가지고 .. !!

+5

왜 그런 동작을 설명 할 수 있습니까? – adrianbanks

+1

기본 키의 번호를 다시 지정하지 마십시오. 그러면 많은 문제가 발생할 것입니다. (기본 키를 만드는 것을 제외하고는 자동 증가에 대한 다른 유용한 용도를 찾을 수 없습니다.) –

+0

또한 해결하려는 비즈니스 사례/사용 사례/문제뿐만 아니라 특정 플랫폼도 게시하십시오. Autonumber는 일반적인 ANSI SQL 개념이 아니며 많은 SQL 구현이 있습니다. 사람의 일반적 게시물 "SQL은"하지만 여기 사람들에게 매우 혼란 스러울 수 있습니다 경우 지식 SQL 사용자가 그 안에 여러 플랫폼과의 차이점을 잘 알고 있기 때문에 우리는 일반적으로 SQL 서버를 가정합니다. –

답변

4

번호를 추가 할 수 있습니다. 코드에서 키가 인접하지 않아야합니다. 열쇠에 관해서는 절대 추측해서는 안됩니다.

+0

개념을 설명해 주셔서 감사합니다. 예, 맞습니다 ... 혼란 스럽네요 ... 정말 감사드립니다 !! – ferhan

4

IDENTITY/autonumber 열의 대상이 아닙니다.

동적 열 번호가 필요한 경우 (순서에 따라 다름) 평범한 이전 데이터 열이 아닌 동적 인 것을 사용하십시오.

예를 들어, 당신은 단지 해당 ID 열을 없애 및 GETDATE을 디폴트에서 CreationDate에 날짜 컬럼()이 잠재적으로 수십만 개의 레코드를 업데이트 포함 할

SELECT * 
    ,ROW_NUMBER() OVER (ORDER BY CreationDate) AS ID 
FROM tbl 
+0

어쨌든 기본 RDBMS가 SQL Server 인 것처럼 보입니다. :) –

+0

@ 안드리 M입니다. 요즘 오라클에서 더 많은 시간을 보냈지 만. SQL Server에 대한 접근성이 뛰어나고 초보자들에게 인기있는 SQL Server의 한 가지 문제점은 SQL Server를 스택 오버플로 (Stack Overflow)에서 SQL로 축약하는 경향이 있다는 것입니다. –

+0

나는 그런 사람들을 여기에서 만났습니다. 지금까지 그런 경향이 아니라는 것을 눈치 채지 못했지만 앞으로는 더 많은 관심을 기울일 것입니다. 관찰을 공유해 주셔서 감사합니다. –

0

Identity에 대한 일반적인 SQL 동작입니다.

+1

IDENTITY 열은 PRIMARY KEY 일 필요는 없습니다. –

+0

. 그것은 미스입니다, 미안합니다 –

+0

그것은 종종 PK이고 또한 클러스터되어 있습니다. 단지 그럴 필요는 없다는 것을 지적하고 싶었습니다. 갭 동작이 일관적이고 필요하다는 것은 정확합니다. 또한 ID가 "사용되지 않는"단순한 중단 된 트랜잭션에서도 발생합니다. –

1

선언은 = 4
을 @id
세트에서 INT 테이블에서 삭제 @id 여기서 ID = @ ID

테이블 업데이트
세트 ID = ID - 1
ID> @ID

이 항목을 사용하지 마십시오.

+0

개념을 설명 주셔서 감사합니다. 예, 맞습니다 ... 혼란 스럽네요 ... 정말 감사드립니다 !! – ferhan

1

용서 하시겠습니까? 이것은 단지 숫자 일 뿐이며, ID로이 테이블을 참조하는 다른 테이블을 가질 가능성이 큽니다. 이것이 DB가하는 최선의 방법입니다. 번호 매기기에 대해 걱정하지 마십시오.

+0

개념을 설명해 주셔서 감사합니다. 예, 맞습니다 ... 혼란 스럽네요 ... 정말 감사드립니다 !! – ferhan