안녕하세요, 오늘 가입해서 글을 처음 남겨 봅니다.
현재 MS Server 2003과 MS SQL Server 2000을 운용중에 있는 직장인입니다.
며칠 전부터 제가 전혀 손을 대지 않은 상태에서 이상한 문의가 올라와서 확인을 해보는데 전문적으로 Server에 대해 공부를 한 사용자가 아니라서 도저히 알 방법이 없어 이렇게 문의 글을 남깁니다.
질문 1. 테이블 중 한 열이 SAP (numeric(5,0), NotNull 로 지정되어 있는 상태입니다. (개발은 다른 사람이 했습니다.)
그 동안 눈여겨 보지 않아서 잘 몰랐는데 이 열에 저장되는 숫자가 01, 02, 03 ... 이런 식으로 지정이 되었었다고 하십니다.
그런데 며칠 전부터 01, 02, 03 이 아니라 1,2,3 으로 저장이 된다고 하네요. 거기에 업친데 덥친 격으로 10을 초과해서 저장하려고 하면 PK 위반으로 저장조차 되지 않는 현상이 있습니다. 수정한 부분이 전혀 없습니다.
PK 추가 당시 구문입니다.
ALTER TABLE [dbo].[SAPPIC] ADD CONSTRAINT [PK_SAP] PRIMARY KEY NON CLUSTERED ([REVNO],[SAP]) ON [PRIMARY] GO
인수인계 받으면서 남겨져 있던 문장을 그대로 긁어 왔습니다.
질문 2. 질문 1에 있는 SAP 열에 있는 숫자들이 1, 2, 3, 4 ... 이런 식으로 저장되는게 아니라 1,11,12,13 ... 2, 21, 22 ... 이런식으로 저장되어 순서가 뒤죽박죽으로 변해 버렸습니다. 과거 이력들이 전부 그런 것은 아니고 며칠 전의 자료들만 이렇게 갑자기 문제가 생겼습니다.
1. 이것을 다시 1, 2, 3 ... 9, 10, 11, 12 ... 이런식으로 위치를 바꿔서 저장할 수 있나요?
2. 아니면 현재 저장되어 있는 숫자들을 01, 02, 03 ... 이런식으로 바꿀 수 있나요? 그리고 바꾸고 나서 데이터 저장 순서도 오름차순 순서대로 저장할 수 있나요 ?
질문 내용이 많이 이상할 수 있지만 겉핥기 수준으로 배운 사용자가 남긴 것으로 넓은 아량으로 이해 바랍니다.
고수 분들 좀 도와주세요 ㅠㅠ
PK 를 자동증가값이 아닌 다른곳에서 채번후 저장하는 방식인것 같습니다.
즉 1~10까지 채번값이 존재하지 않아 채번이 이구간에서 새롭게 이루어진것이 아닐까 하는 생각입니다.
1. 해당 데이터를 강제로 바꿀수 있는 방법은 존재합니다. 하지만 느낌상 여러곳과 연결된 데이터라 판단되며 이는 연관된 모든 테이블의 값들도 변경해줘야되는 이슈가 발생되기에... 쉽게 결정내릴수 있는 부분은 아닌것 같습니다. 특히 SAP 쪽이라면 더욱더..
2.이부분역시 1번답으로 대신하겠습니다.
현재로써는 채번을 하는 로직인지부터 살펴보시길 ..
해당 테이블이 사용종은 프로시져 혹은 쿼리문중 INSERT 구문이 포함된 쪽만 집중적으로 보시면 될것 같습니다.