반응형
Oracle 시퀀스 다음 단계 및 곡선 혼란
내 절차에서 나는 이것을 씁니다.
INSERT INTO questions(id, value) VALUES(my_seq.NEXTVAL, p_question);
INSERT INTO DEPENDENCIES(parent_question_id, child_question_id)
VALUES (my_seq.CURRVAL, my_seq.NEXTVAL);
시퀀스의 마지막 값이 1이라고 가정합니다.이 경우 다음과 같은 결과가 예상됩니다.
my_seq.NEXTVAL = 2;
my_seq.CURRVAL = 2;
my_seq.NEXTVAL = 3;
하지만 다음과 같은 내용이 삽입됩니다.
my_seq.NEXTVAL = 2;
my_seq.CURRVAL = 3;
my_seq.NEXTVAL = 3;
오라클이 왜 이런 식으로 시퀀스 값을 검색하는지 알고 싶습니다.
세 개의 개별 문이 있는 경우:
다음 발
만곡의
다음 발
그렇다면 당신이 옳을 것입니다.하지만 당신은 두 개 밖에 없습니다.
다음 발
만곡과 차곡
Currentval 및 nextval은 단일 원자 단계의 일부입니다. 다음 val 이전에는 current가 처리되지 않습니다.
이를 위해 변수를 사용해야 합니다.
DECLARE
l_parent_question_id NUMBER ;
l_child_question_id NUMBER ;
BEGIN
l_parent_question_id := my_seq.NEXTVAL ;
INSERT INTO questions(id, value) VALUES(l_parent_question_id, p_question);
l_child_question_id := my_seq.NEXTVAL ;
INSERT INTO DEPENDENCIES(parent_question_id, child_question_id)
VALUES (l_parent_question_id, l_child_question_id);
END ;
크리스찬의 설명을 따라가기 위해 문서화된 행동은 다음과 같습니다.
이러한 위치 중 하나에 두 가지 모두에 대한 참조가 포함된 경우
CURRVAL
그리고.NEXTVAL
그런 다음 Oracle은 시퀀스를 증가시키고 둘 다에 대해 동일한 값을 반환합니다.CURRVAL
그리고.NEXTVAL
.
이 경우 '위치'는 그 앞에 있는 목록의 항목입니다. "각각,INSERT
를 포함하는 진술VALUES
절".
언급URL : https://stackoverflow.com/questions/51148996/oracle-sequence-nextval-and-currval-confusing
반응형
'source' 카테고리의 다른 글
Android에서 Shared Preferences를 사용하여 값을 저장, 가져오기 및 편집하는 방법 (0) | 2023.07.03 |
---|---|
Excel 시트에서 병합된 셀을 탐지하는 방법은 무엇입니까? (0) | 2023.07.03 |
oracle pl/sql 내부에서 CLOB를 VARCHAR2로 변환하는 방법 (0) | 2023.07.03 |
갈라지는 낙타 케이스 (0) | 2023.07.03 |
I18n in Spring 부츠 + Thymeleaf (0) | 2023.07.03 |