programing

Oracle에 기본 키에 대한 자동 증분 기능이 없는 이유는 무엇입니까?

goodsources 2023. 7. 20. 21:53
반응형

Oracle에 기본 키에 대한 자동 증분 기능이 없는 이유는 무엇입니까?

오라클이 기본 키에 대해 자동 증분 기능을 지원하지 않는 이유에 대해 누군가 설명할 수 있습니까?

시퀀스와 트리거의 도움으로 동일한 기능을 달성할 수 있다는 것을 알고 있습니다. 하지만 오라클은 내부적으로 시퀀스와 트리거를 생성하는 자동 증분 키워드를 도입하지 않은 이유는 무엇입니까?오라클에 있는 사람들은 분명히 이것에 대해 생각했을 것입니다.이 기능을 제공하지 않는 이유가 있을 것입니다.무슨 생각 있어요?

그냥 용어일 수도 있습니다.'AUTOINCREMENT'는 레코드 '102'와 '104' 사이에 해당 레코드 '103'이 생성됨을 의미합니다.클러스터 환경에서는 시퀀스가 반드시 그렇지는 않습니다.한 노드는 '100', '101', '102'를 삽입할 수 있고 다른 노드는 '110', '111', '112'를 삽입할 수 있으므로 레코드는 'Out-order'입니다.[물론, '시퀀스'라는 용어도 같은 의미입니다.]

시퀀스 모델을 따르지 않기로 선택한 경우 잠금 및 직렬화 문제가 발생합니다.다음 값을 결정하기 전에 다른 삽입의 커밋/롤백을 기다리도록 강제로 삽입하시겠습니까? 아니면 트랜잭션이 롤백되면 키에 공백이 발생한다는 것을 수락하시겠습니까?

그런 다음 해당 필드에 대한 특정 값(즉, 허용 여부 또는 기본값처럼 작동하는지 여부)이 있는 행을 테이블에 삽입하려는 경우 또는 해당 필드를 업데이트하려는 경우에 수행할 작업에 대한 문제가 있습니다.누군가 '101'을 삽입하면 자동 증분 '점프'를 '102'로 실행하거나 중복 값을 시도할 위험이 있습니다.

이는 IMP 유틸리티와 직접 경로 쓰기 및 이전 버전과의 호환성에 영향을 미칠 수 있습니다.

저는 그것이 불가능하다고 말하는 것이 아닙니다.하지만 저는 결국 누군가가 그것을 보고 개발 시간을 다른 곳에서 더 잘 보낼 수 있다고 결정했다고 생각합니다.


추가할 편집:

Oracle 12.1에서는 IDENTITY 열 지원이 추가되었습니다.

"ID 열에는 후속 각 INSERT 문에 대해 시퀀스 생성기의 증가 또는 감소 정수 값이 할당됩니다.identity_options 절을 사용하여 시퀀스 생성기를 구성할 수 있습니다."

https://docs.oracle.com/database/121/SQLRF/statements_7002.htm#CJAHJHJC

이것은 다양한 DB 진영 간에 꽤 오랫동안 논쟁의 대상이 되어 왔습니다.Oracle과 같이 세련되고 잘 구축된 데이터베이스 시스템의 경우, 여전히 이러한 일반적으로 사용되는 가치 있는 기능을 사용하려면 많은 코드와 노력이 필요할 정도로 놀랍습니다.

툴킷에 일종의 증분 기본 키 빌더/기능/도구를 넣고 오라클 작업에 편리하도록 하는 것이 좋습니다.그리고 의원에게 편지를 써서 GUI 또는 단일 SQL 행을 사용하여 이 기능을 사용할 수 있도록 하려면 얼마나 나쁜지 알려주십시오!

왜냐하면 자동증분이 하는 모든 것을 할 수 있는 시퀀스가 있기 때문입니다.

많은 사람들이 이것에 대해 불평했지만, 일반적인 대답은 시퀀스와 트리거로 충분히 쉽게 만들 수 있다는 것입니다.

시퀀스가 쉽게 동기화되지 않을 수 있습니다(누군가가 시퀀스를 업데이트하지 않고 수동으로 데이터베이스에 레코드를 삽입).Oracle은 이를 오래 전에 구현했어야 합니다.시퀀스는 사용하기 쉽지만 자동 증분만큼 쉽지 않습니다(추가 코딩이 필요함).

언급URL : https://stackoverflow.com/questions/1204372/why-oracle-does-not-have-autoincrement-feature-for-primary-keys

반응형