사용자 정의 생성한 정체성에 열 Oracle

0

질문


나는 설명서를 읽을 위한 정체성에 열로 오라클 대한 자세한 여기:https://docs.oracle.com/en/database/other-databases/nosql-database/19.1/java-driver-table/creating-tables-identity-column.html

이 설명서에서 언급하는 값이 얻는 삽입에 의해 발전기 순서로 신원 열의 정수입니다. 이 여기에서 찾을 수 있습니다 https://docs.oracle.com/en/database/other-databases/nosql-database/19.1/java-driver-table/sequence-generator-attributes.html

지금,나의 질문은 이 방법이 있을 사용자 지정 값에 대해 생성된 신분 란? 다른 것보다 정수의 값이다. 말 문자열음'ID001','ID002'등?
많은 사전에 감사합니다

oracle sql
2021-11-24 06:26:45
2

최고의 응답

2

첫째 는 이유를 생각해야 사용할 문자열로 primary key.

당신은 어떤 장점이 있나요? (다른 사용하는 것보다 더 많은 스토리지?)

둘째 로 당신의 키 등 ID001 무엇을 고려해야 하는 경우에 일어날 당신은 1000 개 이상의 행...

하나 설명을 찾고 있는 일부 사용자 읽을 수 있는 식별 니다. 이를 사용하여 제공될 수 있 는 표준 ID 를 추가 열상

create table MY_TABLE (
ID number(19,0) generated as identity, 
ID_DESC varchar2(255 char) generated always as ('ID'||ID) virtual,
col int,
primary key (ID))
;

insert into my_table(col)
select rownum from dual connect by level <= 3;


select id, id_desc from  my_table order by id;

        ID ID_DESC
---------- ---------        
         1 ID1                                                                                                                                                                                                                                                            
         2 ID2                                                                                                                                                                                                                                                            
         3 ID3 
2021-11-24 10:43:34

감사 MarmiteBomber. 이 제공하는 또 다른 좋은 관점입니다. 응답에 의해 주어진@옮기지 설명합니다. 내가 변경됩니다. 이 상품에 대한 리뷰가 없습니다.
TheEqualizer
0

그것은 가능하지만 당신이해야 할 뭔가가 그것에 대해(즉,코드를 작성-트리거). 예제는 다음과 같습니다.

샘플 테이블에는 해당 ID 를 열어야 합 자동 생성:

SQL> create table test (id varchar2(10), name varchar2(10));

Table created.

시퀀스는 것 트리거에 사용:

SQL> create sequence seq_test;

Sequence created.

트리거가 오히려 간단합니다;그것을 연결하는 ID 으로 순번 왼쪽 패딩이 영 최대 3 자(예를으로 이렇게 말한다):

SQL> create or replace trigger trg_bi_test
  2    before insert on test
  3    for each row
  4  begin
  5    :new.id := 'ID' || lpad(seq_test.nextval, 3, '0');
  6  end;
  7  /

Trigger created.

테스트:

SQL> insert into test (name) values ('Little');

1 row created.

SQL> insert into test (name)
  2    select 'Foot'      from dual union all
  3    select 'Equalizer' from dual;

2 rows created.

SQL> select * from test order by id;

ID         NAME
---------- ----------
ID001      Little
ID002      Foot
ID003      Equalizer

SQL>

P.S. 링크를 게시하지 않 관련하여"전통적인"Oracle 데이터베이스를 확인 예를 들어 테이블 생성 문서에 포함하고,정보 정체성에 대한 열이 있습니다. 귀하의 링크가 관련된 NoSQL 에 데이터베이스입니다.

2021-11-24 08:02:17

이렇@너무나. 감사합니다. Sorry,제가 잘못 할당된 태그:)
TheEqualizer

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................