code

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

codestyles 2020. 11. 15. 11:20
반응형

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 포럼 에서 Snagged

다음과 같이 열을 추가하려면 alter table을 사용하십시오.

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

Oracle Data Modeler 를 사용하여 자동 증분 대리 키를 만들 수 있습니다 .

1 단계.-관계형 다이어그램 만들기

먼저 논리 다이어그램과 엔지니어를 만들어 관계형 다이어그램을 만들거나 곧바로 관계형 다이어그램을 만들 수 있습니다.

Add the entity (table) that required to have auto incremented PK, select the type of the PK as Integer.

Step 2. - Edit PK Column Property

Get the properties of the PK column. You can double click the name of the column or click on the 'Properties' button.

Column Properties dialog box appears.

Select the General Tab (Default Selection for the first time). Then select both the 'Auto Increment' and 'Identity Column' check boxes.

Step 3. - Additional Information

Additional information relating to the auto increment can be specified by selecting the 'Auto Increment' tab.

  • Start With
  • Increment By
  • Min Value
  • Max Value
  • Cycle
  • Disable Cache
  • Order
  • Sequence Name
  • Trigger Name
  • Generate Trigger

It is usually a good idea to mention the sequence name, so that it will be useful in PL/SQL.

Click OK (Apply) to the Column Properties dialog box.

Click OK (Apply) to the Table Properties dialog box.

Table appears in the Relational Diagram.

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

반응형