2015-01-06 2 views
0

오라클에 익숙하지는 않지만 시퀀스를 사용하는 레코드의 번호 매기기 생성을위한 애플리케이션 용 트리거를 작성했습니다. 내가 가진 문제는 숫자가 이미 사용 중일 수 있으며 그 번호가 이미 사용되었는지 확인하기 위해 수표를 추가하여 시퀀스에서 사용 가능한 다음 번호를 선택하려고합니다. 이 일을 먼저 할 수 있습니까? 그렇다면 어떤 도움을 주시면 감사하겠습니다.오라클 시퀀스 트리거

+4

수동으로 할당 된 ID가있는 시퀀스의 자동 할당 ID를 실제로 혼합해서는 안됩니다. 수동으로 할당 된 기존 레코드가 있고 모든 새 레코드에 대해 자동 할당을 시작하려면 모든 기존 값보다 높은 순서로 시작할 수 있으므로 중복이 없습니다. (처리 할 계획이 아니라면 예외를 잡아서는 안되며 다시 일으키면 문제의 원래 위치가 숨겨집니다.) –

+0

답장을 보내 주셔서 감사합니다 & 알렉스! 번호는 고객 참조 번호와 마찬가지로 ID로 사용되지 않습니다. 혼합하지 말고 더 높은 숫자 범위에서 시작하는 것이 좋습니다. – JaneyD

+0

믹스하면 수동 설정과 자동 설정이 모두 충돌을 처리해야합니다. 하나의 메커니즘 만 있으면 더 간단합니다. –

답변

0

열에 기존 (숫자) 데이터가있는 경우 시퀀스를 사용하지 마십시오. 중복으로 이어질 수 있습니다. 비어있는 상태에서 시작하여 시퀀스를 사용하거나 정말로 붙어있는 경우 최대 pk를 찾아 시퀀스의 startswith 속성을 재설정하십시오.

또는 전역 적으로 항상 고유하다는 장점이있는 guid 대신 guids를 사용할 수 있습니다. 트리거에서 sys_guid() 함수를 호출하십시오. 그들은 색인 생성 등 다른 문제로 이어질 수 있습니다.