sourcecode

Oracle의 기존 테이블에 기본 키 자동 증가 추가

copyscript 2023. 3. 10. 22:41
반응형

Oracle의 기존 테이블에 기본 키 자동 증가 추가

데이터가 있는 기존 테이블에 새 자동 증가 기본 열을 추가하고 싶습니다.그걸 어떻게 하는 거죠?

처음에 컬럼을 추가하고 그 후에 시퀀스를 추가하려고 했는데, 그 컬럼을 삽입하여 프라이머리 키로 만드는 방법을 잊어버렸습니다.

테이블이 호출되었다고 가정합니다.t1프라이머리 키가 호출됩니다.id
먼저 시퀀스를 만듭니다.

create sequence t1_seq start with 1 increment by 1 nomaxvalue; 

그런 다음 삽입 시 증가하는 트리거를 만듭니다.

create trigger t1_trigger
before insert on t1
for each row
   begin
     select t1_seq.nextval into :new.id from dual;
   end;

열과 시퀀스가 있는 경우 먼저 모든 기존 행에 대해 새 키를 입력해야 합니다.어떤 키가 어떤 행에 할당되어 있는지 상관하지 않는 경우

UPDATE table_name
   SET new_pk_column = sequence_name.nextval;

이 작업이 완료되면 프라이머리 키 제약조건을 작성할 수 있습니다(기존 프라이머리 키 제약조건이 없거나 기존 프라이머리 키 제약조건을 이미 삭제했다고 가정합니다).

ALTER TABLE table_name
  ADD CONSTRAINT pk_table_name PRIMARY KEY( new_pk_column )

키를 자동으로 생성하려면 트리거를 추가해야 합니다.

CREATE TRIGGER trigger_name
  BEFORE INSERT ON table_name
  FOR EACH ROW
BEGIN
  :new.new_pk_column := sequence_name.nextval;
END;

이전 버전의 Oracle을 사용하는 경우 구문이 좀 더 번거롭습니다.

CREATE TRIGGER trigger_name
  BEFORE INSERT ON table_name
  FOR EACH ROW
BEGIN
  SELECT sequence_name.nextval
    INTO :new.new_pk_column
    FROM dual;
END;

Oracle OTN 포럼에서 삭제

alter 테이블을 사용하여 열을 추가합니다. 예:

alter table tableName add(columnName NUMBER);

다음으로 시퀀스를 작성합니다.

CREATE SEQUENCE SEQ_ID
START WITH 1
INCREMENT BY 1
MAXVALUE 99999999
MINVALUE 1
NOCYCLE;

그리고 용도update이렇게 열에 값을 삽입하다

UPDATE tableName SET columnName = seq_test_id.NEXTVAL

오라클 Data Modeler를 사용하여 자동 증분 대리 키를 생성할 수 있습니다.

순서 1 - 관계도 작성

먼저 논리 다이어그램과 엔지니어를 생성하여 관계 다이어그램을 작성하거나 관계 다이어그램을 즉시 작성할 수 있습니다.

PK가 자동으로 증가해야 하는 엔티티(테이블)를 추가하고 PK 유형을 정수로 선택합니다.

2단계 - PK 열 속성 편집

PK 열의 속성을 가져옵니다.열 이름을 두 번 클릭하거나 '속성' 버튼을 클릭할 수 있습니다.

[ Column Properties ]대화 상자가 표시됩니다.

[ General ]탭을 선택합니다(최초로 기본 선택).그런 다음 '자동 증분' 및 'ID 열' 확인란을 모두 선택합니다.

순서 3 - 상세 정보

자동 증분' 탭을 선택하여 자동 증분 관련 추가 정보를 지정할 수 있습니다.

  • 시작점
  • 증가 기준
  • 최소값
  • 최대값
  • 사이클
  • 캐시 사용 안 함
  • 주문
  • 시퀀스명
  • 트리거명
  • 트리거 생성

PL/SQL에서 유용하게 사용할 수 있도록 시퀀스 이름을 언급하는 것이 좋습니다.

[ Column Properties ]대화 상자에서 [OK](적용)을 클릭합니다.

[테이블 속성]대화상자에 [OK](적용)을 클릭합니다.

관계 다이어그램에 표가 표시됩니다.

언급URL : https://stackoverflow.com/questions/11464396/add-a-auto-increment-primary-key-to-existing-table-in-oracle

반응형