[SQL] 오라클에게 마지막 삽입 IDENTITY 검색
SQL오라클에게 마지막 삽입 IDENTITY 검색
오라클 12C 때문에 우리는 IDENTITY 필드를 사용할 수 있습니다.
(즉, @@ ID를 선택하거나 LAST_INSERTED_ID ()를 선택 등) 마지막으로 삽입 된 ID를 검색 할 수있는 방법이 있습니까?
해결법
-
==============================
1.잘. 오라클은 12C에 IDENTITY 기능에 대한 순서 및 기본 값을 사용합니다. 따라서 당신은 당신의 질문에 대한 시퀀스에 대해 알 필요가있다.
잘. 오라클은 12C에 IDENTITY 기능에 대한 순서 및 기본 값을 사용합니다. 따라서 당신은 당신의 질문에 대한 시퀀스에 대해 알 필요가있다.
첫 번째 테스트 신원 테이블을 만듭니다.
CREATE TABLE IDENTITY_TEST_TABLE ( ID NUMBER GENERATED ALWAYS AS IDENTITY , NAME VARCHAR2(30 BYTE) );
첫째,이 ID 열 생성 시퀀스 이름을 찾을 수 있습니다. 이 시퀀스의 이름은 테이블에 기본값입니다.
Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from USER_TAB_COLUMNS where TABLE_NAME = 'IDENTITY_TEST_TABLE';
나를 위해이 값은 "_ 193,606 ISEQ $$"입니다
일부 값을 삽입합니다.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla'); INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('aydın');
다음 값을 삽입하고 정체성을 찾을 수 있습니다.
INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla'); SELECT "ISEQ$$_193606".currval from dual;
당신은 당신의 ID 값을 볼 수 있습니다. 당신은 하나 개의 블록을 사용하고 싶은 경우
declare s2 number; begin INSERT INTO IDENTITY_TEST_TABLE (name) VALUES ('atilla') returning ID into s2; dbms_output.put_line(s2); end;
마지막 ID 내 ID 열 이름입니다.
-
==============================
2.확인해주십시오
확인해주십시오
INSERT INTO yourtable (....) VALUES (...) RETURNING pk_id INTO yourtable;
그것은 당신이 마지막으로 삽입 된 행을 검색하는 데 도움이 될 것입니다
-
==============================
3.오라클은 단지 그들이 ID를 지원한다는 말을 IDENTITY를 구현 것으로 보인다. 모든 것은 여전히 시퀀스를 사용하여 구현하고, 때때로 당신은 (즉, 최신 삽입 IDENTITY를 검색) 작업의 일부를 만들기 위해 SEQUENCE에 접근 할 필요가있다.
오라클은 단지 그들이 ID를 지원한다는 말을 IDENTITY를 구현 것으로 보인다. 모든 것은 여전히 시퀀스를 사용하여 구현하고, 때때로 당신은 (즉, 최신 삽입 IDENTITY를 검색) 작업의 일부를 만들기 위해 SEQUENCE에 접근 할 필요가있다.
이 MySQL은, SQL 서버, DB2 유사한 IDENTITY를 검색 할 수있는 방법이없는 등, 당신은 SEQUENCE를 사용하여 검색 할 수 있습니다.
-
==============================
4.생성하고 사용하는 테이블을 자동 서열 낙하 - IDENTITY 열은 "후드"시퀀스를 사용한다. 또한, 사용 시작 및 증가 매개 변수를 지정할 수 있습니다 그것은 당신이 직접의 값을 작동하지 않을 때 IDENTITY를 사용하는 정말 매우 편리 2. 1000 및 증가로 시작합니다.
생성하고 사용하는 테이블을 자동 서열 낙하 - IDENTITY 열은 "후드"시퀀스를 사용한다. 또한, 사용 시작 및 증가 매개 변수를 지정할 수 있습니다 그것은 당신이 직접의 값을 작동하지 않을 때 IDENTITY를 사용하는 정말 매우 편리 2. 1000 및 증가로 시작합니다.
어떻게 든 순서를 조작해야하는 경우 만 직접 사용한다 오라클 12C에서 사용할 수있는 다른 옵션 - 열 기본값. Sutch 기본 값은 시퀀스 또는 CURRVAL NEXTVAL로부터 생성 될 수있다. 당신이 이해할 수있는 시퀀스 이름을 가지고 트리거없이 "정체성"로 사용할 수 있도록합니다.
create table my_new_table (id number default my_new_table_seq.nextval not null)
my_new_table_seq.currval : 당신은 항상 호출 할 수 있습니다.
RETURNING 절을 사용하여 삽입 문에 SEQUENCE에서 생성 된 ID를 얻을 수 있습니다.
예를 들어, 임시 테이블을 만들 :
create global temporary table local_identity_storage ("id" number) on commit delete rows
임시 테이블에서이 값을 절약 삽입 몇 가지를 확인합니다 :
CREATE TABLE identity_test_table ( id_ident NUMBER GENERATED BY DEFAULT AS IDENTITY, same_value VARCHAR2(100) ); declare v_id number(10, 0); begin INSERT INTO identity_test_table (same_value) VALUES ('Test value') RETURNING id_ident INTO v_id; insert into local_identity_storage ("id") values (v_id); commit; end;
지금 당신은 "로컬"삽입 ID를 가지고있다.
select "id" from local_identity_storage
-
==============================
5.당신의 범위는 전역 또는 최종 사용자, 어떤 삽입? 글로벌 다만 사용하는 경우
당신의 범위는 전역 또는 최종 사용자, 어떤 삽입? 글로벌 다만 사용하는 경우
SELECT mytable_seq.nextval MyTableID FROM DUAL
https://www.sitepoint.com/community/t/oracle-last-insert-id-question/1402
특정 트랜잭션 내에서 삽입 및 쿼리를 캡슐화합니다.
-
==============================
6.나는이 블로그 게시물에 서면으로 작성했습니다, 당신은 단일 쿼리와 스키마의 모든 현재 ID 값을 가져올 수 :
나는이 블로그 게시물에 서면으로 작성했습니다, 당신은 단일 쿼리와 스키마의 모든 현재 ID 값을 가져올 수 :
with function current_value(p_table_name varchar2) return number is v_current number; begin for rec in ( select sequence_name from user_tab_identity_cols where table_name = p_table_name ) loop execute immediate 'select ' || rec.sequence_name || '.currval from dual' into v_current; return v_current; end loop; return null; end; select * from ( select table_name, current_value(table_name) current_value from user_tables ) where current_value is not null order by table_name; /
from https://stackoverflow.com/questions/34811283/retrieve-oracle-last-inserted-identity by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 : 기능 인덱스 선택의 고유성 (0) | 2020.06.11 |
---|---|
[SQL] SQL 그룹으로 각 그룹 상위 N 항목 (0) | 2020.06.11 |
[SQL] 엔티티 프레임 워크 6 호출 DB 기능 (0) | 2020.06.11 |
[SQL] PHP에서 MySQL의 쿼리를 통해 행에 의해 반복하는 방법 (0) | 2020.06.11 |
[SQL] MySQL의 쿼리와 가장 가까운 수치를 선택 (0) | 2020.06.11 |