나는 DB/최대 절전 모드에 새로운 코드를 발견데이터베이스에서 시퀀스를 사용하는 이유는 무엇입니까?
@SequenceGenerator(name = "entSeq", allocationSize = 5, sequenceName = "CODE_SEQ") ... @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entSeq")
기본 키 순서를 설정합니다.
왜 시퀀스가 기본 키의 값으로 사용 되었습니까? 어떤 목표를 언급했다 :
- 증가 성능
- 제약 조건을 추가, 일부 검사 ID의 정수 값의
- 제한 가능한 값의 범위는, 왜 그렇게해야 할 일?
- 왜 1부터 계산을 시작하나요?
나는의 구문과 사용법에 대해 읽어 :
- http://msdn.microsoft.com/en-us/library/ff878091.aspx
- http://www.techonthenet.com/oracle/sequences.php
하지만 내 질문에 대한 답을 발견하지 않습니다.
UPDATE : 어떻게 얻는 DB 이론에 문제가있는 것으로 나타 시퀀스 번호 생성기
:
- http://www.oracle.com/technetwork/products/rdb/0307-sequences-130053.pdf 가이드 SQL 사용에 : 나는 독서 즐길
기본 키의 고유 ID 그건 내가 내 자신의에서 기본 키 값을 제공하지 않고 테이블에 삽입을 할 수 있다는 것을 의미 :
INSERT INTO suppliers (supplier_id, supplier_name) VALUES (supplier_seq.nextval, 'Kraft Foods');
하지만이 기능이 기본 키 값을 제공하라고 강요하지 않고 모든 DB에 존재해야 기대 .. .
내가 옳다고 생각하니?
UPDATE2 : 기존 데이터베이스에 시퀀스를 추가 할 때이 절은 유용 할 수 있습니다
: 함께 START를 사용하는 이유에 대한
대답. 이전 구성표가 응용 프로그램에서 에 있고 이미 법적 범위에서 일부 값을 소비 한 경우이 절은 사용 된 값을 건너 뛰는 데 사용되는 이 될 수 있습니다. MINVALUE 및 MAXVALUE는 유효 범위를 지정하는 데 사용되지만 START WITH은 이전에 생성 된 값 이 다시 나타나지 않도록 해당 범위 내에서 시퀀스 사용을 시작합니다.
갱신 3 : * 시퀀스 *이 자동으로 모든 데이터베이스에 대한 키를 생성에 http://en.wikipedia.org/wiki/Surrogate_key
DB 공급 업체간에 DB 스키마를 이동할 수있는 이유는 무엇입니까? 이것이 순차 기본 키 값을 사용하는 이유입니까? 그것은 DB 뷰어에서 꽤 보였습니까? – gavenkoa
@gavenkoa 영어가 나쁘다. 통역을하시기 바랍니다. – User404
내 영어로 죄송합니다 (( – gavenkoa